如何在Qt Quick中同时更新多个项目?

如何在Qt Quick中同时更新多个项目?,qt,qtquick2,Qt,Qtquick2,我有一个Qt快速视图,其中包含几个自定义的QQuickItem-派生对象。当我检测到这些项目的外观应该改变时,我调用QQuickItem::update(),它调用QQuickItem::updatePaintNode() 在我的应用程序中,有几个项目同时更改状态,我希望在同一帧上同时呈现这些更改。是否有一种方法可以同步对QQuickItem::update()的多个调用,以确保对QQuickItem::updatePaintNode()的实际调用在同一帧上执行?在正确的设计中,应该自动执行。如

我有一个Qt快速视图,其中包含几个自定义的
QQuickItem
-派生对象。当我检测到这些项目的外观应该改变时,我调用
QQuickItem::update()
,它调用
QQuickItem::updatePaintNode()


在我的应用程序中,有几个项目同时更改状态,我希望在同一帧上同时呈现这些更改。是否有一种方法可以同步对
QQuickItem::update()
的多个调用,以确保对
QQuickItem::updatePaintNode()
的实际调用在同一帧上执行?

在正确的设计中,应该自动执行。如果“数据”端发生变化,所有相关项将在同一事件循环周期中更新。如何更新?如果渲染由Qt内部的线程(“渲染器线程”)控制,为什么我要确保对
QQuickItem::update()
(在渲染器线程中不发生)的多个调用会像我所希望的那样同步?在我看来,为了实现这一点,需要进行显式同步。是什么让你认为它们不会呢?我看不出一个有效的理由可以将更新扩展到一个以上的事件循环周期。更改将在主线程中通知,在渲染线程的下一个周期中,受影响的对象将被更新。我正试图依赖文档化的行为,特别是当多线程被抛出到混合中时。是什么让我认为在一个线程中对
QQuickItem::update()
的多个调用会以某种方式与渲染线程的操作同步?
QQuickItem::update()
的文档中没有任何内容表明任何内容都会延迟到主事件循环或类似的内容。据我所知,对更新函数的第一次调用可能会触发渲染线程立即开始渲染新帧,然后我才能获得第二次更新调用。在正确的设计中,它应该自动发生。如果“数据”端发生变化,所有相关项将在同一事件循环周期中更新。如何更新?如果渲染由Qt内部的线程(“渲染器线程”)控制,为什么我要确保对
QQuickItem::update()
(在渲染器线程中不发生)的多个调用会像我所希望的那样同步?在我看来,为了实现这一点,需要进行显式同步。是什么让你认为它们不会呢?我看不出一个有效的理由可以将更新扩展到一个以上的事件循环周期。更改将在主线程中通知,在渲染线程的下一个周期中,受影响的对象将被更新。我正试图依赖文档化的行为,特别是当多线程被抛出到混合中时。是什么让我认为在一个线程中对
QQuickItem::update()
的多个调用会以某种方式与渲染线程的操作同步?
QQuickItem::update()
的文档中没有任何内容表明任何内容都会延迟到主事件循环或类似的内容。据我所知,第一次调用update函数可能会触发渲染线程立即开始渲染新帧,然后才能调用第二次更新。