我正在开发一个 Qt 应用程序,并且在某些时候我有一个类(我在这里将其命名为“引擎”)来管理程序:它有一个带有超时的信号,这使得该类可以绘制并改进应用程序逻辑。此外,它接收从 QGraphicsScene 捕获的事件。
每个引擎“滴答”,在场景上调用 update(),根据应用进化更新绘图。
自然,我希望绘图与事件的反应同步,否则,可能会在事件的反应破坏同一对象时绘制某个对象,从而导致 SegFault。
我尝试在引擎上使用队列,这样我只会让引擎在更新的特定位置对这些事件做出反应,从而不会干扰绘图部分。
出现了两个问题:
- 我无法复制 QGraphicsEvent。显然,复制操作员是私有的(无论如何我认为这是有充分理由的)。
- 当类在处理事件时,在绘制之前,也可能会出现一个新事件,这可能是“坏”的,因为它没有同步
考虑到这种情况,有什么办法可以解决这种情况吗?Qt中是否有任何标准程序?我的意思是,我如何确保绘图不会与应用程序的事件反应不同步?