Qt中不能同时绘制多个对象吗?

Is it not possible to have multiple objects in Qt being painted simultaneously?

Qt documentation on QPainter

The original question on SO, that I looked into.

但这真的让我想知道,这是我的问题(我也用谷歌搜索了一下),然后如何同时绘制具有许多对象的场景(至少它们给人一种并发的错觉)?以某种方式或通过一些基于时间的交错使用线程?

也许这是个愚蠢的问题。我不知道。

Re QWidget 绘画:绘画事件由小部件合成器传送到各个小部件。它使用默认光栅后端的方式如下:层次结构中最顶层的小部件由 QImage 支持。当要重绘任何子小部件时,合成器将复合绘制事件传递给覆盖要重绘区域的小部件。这是在合成器遍历小部件图时顺序完成的。

Re QGraphicsItem 绘画:绘画"events" 由场景传送到各个项目。要绘制的项目是根据需要更新的区域、明确标记为更新的项目等来选择的。画家设置为正确地将项目与场景的其余部分合成。当场景遍历项目图时,对 paint 的调用按顺序完成。

一般来说,由于数据依赖性,并行不可能做到这些,事实上 paintEventpaint 是线程安全的。

您的问题与此根本没有直接关系,您需要展示一个完整的代码示例来重现您的问题。您对项目的实施很可能忽略了项目行为的一些要求。

这确实是一个关于现实中不存在的想象问题的愚蠢问题。图形视图将按照产生所需结果所需的顺序安排项目的连续绘制。现在,如果您的代码没有实现预期的结果,那就完全是另一回事了。没有并发,那些是连续的操作,只发生在主线程。

如果您的绘图非常复杂,请在 QImage 上使用辅助线程进行绘图,并使用 QImage 作为缓存在各自的绘图函数中绘制您的项目。

Now for some reason, I need to show and update both the objects at the same time.

可能是什么原因? "at the same time" 是什么意思?在单帧中?相差一毫秒是否符合 "at the same time" 的条件?