The original question on SO, that I looked into.
所以,我有两个类,有自己的paint()函数。在接收到由用户进行的不同且独立的动作触发的各自的绘画事件时,将调用绘画功能。这很好。
但这真让我感到疑惑,这是我的问题(我也用Google搜索了一下),然后如何同时绘制了许多对象的场景(至少它们会产生并发错觉)?以某种方式或通过一些基于时间的交错使用线程?
也许这是一个愚蠢的问题。我不知道。
答案 0 :(得分:1)
对于一个在现实中并非不存在的想象问题,这确实是一个愚蠢的问题。图形视图将按照生成所需结果所需的顺序安排项目的连续绘制。现在,如果您的代码没有实现所需的结果,那么这是一个完全不同的主题。没有并发性,这些是仅在主线程中发生的连续操作。
如果您的绘图非常复杂,请使用QImage
上的辅助线程进行绘制,并使用QImage
作为缓存在各自的绘图功能中绘制项目。
现在由于某种原因,我需要显示和更新两个对象 同一时间。
这可能是什么原因? “同时”是什么意思?在一个框架?相距毫秒是否足以“同时”获得资格?
答案 1 :(得分:0)
重新router.on("route", function(page, ...arguments) {
//here 'page' can be 'index', 'lifestyle' or 'about'.
//then you can save the 'page' in a variable or assign your 'active' class right away
});
绘画:绘图事件由窗口小部件合成器传递给各个窗口小部件。它与默认栅格后端一起使用的方式如下:层次结构中最顶层的窗口小部件由QWidget
支持。当要重新绘制任何子窗口小部件时,合成器将复合绘制事件传递给覆盖要重新绘制的区域的窗口小部件。当合成器遍历小部件图时,这将按顺序完成。
重新QImage
绘画:绘画“事件”由场景传递给各个项目。根据需要更新的区域,明确标记要更新的项目等来选择要绘制的项目。画家设置为将项目与场景的其余部分正确合成。当场景遍历项目图时,对QGraphicsItem
的调用将按顺序完成。
通常,由于数据依赖性而无法在 parallel 中执行这些操作,并且paint
或paintEvent
没有要求是线程安全的。
您的问题与此根本没有直接关系,您需要显示一个完整的代码示例来重现您的问题。很可能您的项目实施忽略了项目行为的一些要求。