Qt 当QQuickItem需要更新时获得通知

Qt 当QQuickItem需要更新时获得通知,qt,Qt,我在文档中到处搜索,但没有找到任何与此相关的内容。如果我创建的QML元素的一个子元素由于其更改而需要重新绘制,是否会收到通知。该项是否会发送一个信号或事件,家长可以连接/收听。最好是在项目标记为“脏”时发出,并且应该再次渲染,但类似onPropertyChange的信号也可以工作 范例 MyQmlItem { Rectangle { width: 50; height: 60 color: "blue" Text {

我在文档中到处搜索,但没有找到任何与此相关的内容。如果我创建的QML元素的一个子元素由于其更改而需要重新绘制,是否会收到通知。该项是否会发送一个信号或事件,家长可以连接/收听。最好是在项目标记为“脏”时发出,并且应该再次渲染,但类似onPropertyChange的信号也可以工作

范例

 MyQmlItem {
     Rectangle {
          width: 50; height: 60
          color: "blue"
          Text {
              text: "hello world"
          }
     }
}

如果某些代码(例如更改了矩形的颜色),我希望将此更改通知MyQmlItem。

FWIIW我设法找到了一个可接受的解决方案。我在MyQmlItem类中添加了一个布尔属性“isDirty”,当它设置为true时会发出一个信号。然后,每个子级都需要设置此值,如果它进行了需要重新绘制的更改,则上面的QML将变为

MyQmlItem {
   id: "topItem"
   Rectangle {
      width: 50; height: 60
      color: "blue"
      Text {
          text: "hello world"
          onTextChange: {
              topItem.isDirty = true;
          }
      }
 }

不完美,但足够好,我设法找到了一个可以接受的解决方案。我在MyQmlItem类中添加了一个布尔属性“isDirty”,当它设置为true时会发出一个信号。然后,每个子级都需要设置此值,如果它进行了需要重新绘制的更改,则上面的QML将变为

MyQmlItem {
   id: "topItem"
   Rectangle {
      width: 50; height: 60
      color: "blue"
      Text {
          text: "hello world"
          onTextChange: {
              topItem.isDirty = true;
          }
      }
 }

不完美,但足够好

您能详细说明为什么需要这样的东西吗?我正在将这些项目渲染成QOpenGLFramebufferObject,然后将其作为图像抓取并写入屏幕外设备。如果没有任何更新,我希望避免这种写入。无论FBO是否需要重画,每隔一个Qt渲染帧都会发生写入。您能否详细说明为什么需要这样做?我正在将这些项目渲染到QOpenGLFramebufferObject中,然后将其作为图像抓取并写入屏幕外设备。如果没有任何更新,我希望避免这种写入。无论FBO是否需要重新绘制,写入都将每隔一个Qt渲染帧进行一次