Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止在QtQuick Qml自定义控件中重新绘制底层元素_Qt_Qml_Qt Quick - Fatal编程技术网

防止在QtQuick Qml自定义控件中重新绘制底层元素

防止在QtQuick Qml自定义控件中重新绘制底层元素,qt,qml,qt-quick,Qt,Qml,Qt Quick,我有两个自定义QML组件,继承自QDeclarativeItem 在我的组件的构造函数中,我设置了以下选项: setFlag(QGraphicsItem::ItemHasNoContents, false); setCacheMode(QGraphicsItem::ItemCoordinateCache); 在我的应用程序中,一种类型的元素高于另一种类型的元素。这些元素不共享任何属性,但当其中一个元素正在重绘时,另一个元素也在重绘 如果我在元素上方放置一些标准元素(如文本或矩形)并更改其属性,

我有两个自定义QML组件,继承自
QDeclarativeItem

在我的组件的构造函数中,我设置了以下选项:

setFlag(QGraphicsItem::ItemHasNoContents, false);
setCacheMode(QGraphicsItem::ItemCoordinateCache);
在我的应用程序中,一种类型的元素高于另一种类型的元素。这些元素不共享任何属性,但当其中一个元素正在重绘时,另一个元素也在重绘

如果我在元素上方放置一些标准元素(如
文本
矩形
)并更改其属性,则不会重新绘制元素。所以我想,我忘了在我的组件中设置一些标志

当另一个项目发生变化时,如何防止重新绘制该项目


我在任何基于光栅的渲染系统中使用Qt4.8和QtQuick 1.1,绘图是在备份存储缓冲区上完成的。因此,当
QGraphicsView
中发生任何更改时,所有未完全模糊的项目都必须按从后到前的Z顺序绘制。如果任何可见项发生更改,则必须重新绘制与之相交的所有可见项


你所看到的看起来像是正常的行为。除非您提供了一些代码,否则就不可能知道其他情况。

我知道,但如果我是正确的,缓存必须防止不必要的重画。自从我打开缓存(如上所述)以来,它就开始使用标准元素。但对于我自制的组件,缓存不起作用。我想,我应该通知框架,重绘我的元素不会影响任何其他元素的外观。缓存不会阻止合成的需要,这也不是免费的。