我有两个自定义的QML组件,继承自QDeclarativeItem
。
在我的组件的构造函数中,我设置了以下选项:
setFlag(QGraphicsItem::ItemHasNoContents, false);
setCacheMode(QGraphicsItem::ItemCoordinateCache);
在我的应用程序中,我有一个类型的元素在另一个类型的元素之上。这些元素不共享任何属性,但当其中一个属性重绘时,另一个属性也会重新绘制。
如果我将一些标准元素放在我的元素上方(例如Text
或Rectangle
)并更改它的属性,则不会重新绘制我的元素。所以我想,我忘了在我的组件中设置一些标志。
如果在另一个项目发生变化时如何防止重绘?
我正在使用Qt 4.8和QtQuick 1.1
答案 0 :(得分:1)
在任何基于栅格的渲染系统中,绘图都在后备存储缓冲区上完成。因此,当QGraphicsView
中的任何内容发生变化时,所有未完全遮挡的项目必须按从后到前的Z顺序绘制。如果任何可见项目发生更改,则必须重新绘制与其相交的所有可见项目。
您所看到的看起来像是正常行为。除非你提供一些代码,否则不可能说出来。