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