【问题标题】:QGraphicsScene rendering only certain childrenQGraphicsScene 只渲染某些孩子
【发布时间】:2015-03-22 22:15:05
【问题描述】:

我在我的绘画应用程序中实现了图层。 每个图层都有一个缩略图预览。 我希望图层的缩略图仅显示属于该图层的项目。 现在我调用scene->render() 将所有项目呈现到缩略图。如何仅选择具有特定父项的项目?

QSize size = QSize(scene_->width(), scene_->height());
QImage *thumbnail = new QImage(size, QImage::Format_ARGB32);
thumbnail->fill(Qt::transparent); // Start all pixels transparent
QPainter imagePainter(thumbnail);
imagePainter.setRenderHint(QPainter::Antialiasing);
scene_->render(&imagePainter);
imagePainter.end();

上面的代码渲染了场景的所有时间,但这不是我想要的。

【问题讨论】:

    标签: qt qgraphicsscene


    【解决方案1】:

    如何仅选择具有特定父项的项目?

    上面的代码渲染了场景的所有时间,但这不是我的 想要。

    假设每个图层都有自己的最终父级(不是场景根),您可以简单地将图层根的可见性设置为它所代表的图层的可见性。子对象“继承”其父对象的可见性状态 (docs):

    如果你隐藏了一个父项,它的所有子项也将被隐藏。如果 您显示一个父项,所有子项都将显示,除非他们有 被显式隐藏(即,如果您调用 setVisible(false) 子,即使它的父被隐藏也不会重新显示,然后 再次显示)。

    【讨论】:

    • 这确实是层的工作方式:一个父项充当层的根项,就像文档的这一部分所说的那样。通过隐藏它,我隐藏了图层的项目。你的意思是我应该隐藏除我想要渲染的图层之外的所有图层吗?我假设用户会注意到图层的这种隐藏和显示。但我会试一试。
    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多