Qt 小部件停止接收绘画事件
Qt widget stops receiving paintevents
我一直在 PySide 中实现 Conways game of life [source]。到目前为止,它工作得很好,直到在某些情况下我还没有弄清楚,我用来显示网格的 QGraphicsView(它由 QGraphicsScene 上的几个 QGraphicsRectItems 组成)突然停止连续绘制。 window 的其余部分保持响应,游戏线程保持 运行 并发信号通知 ui 更新当前世代号。只有当 window 获得焦点时,graphicsView 更新大约一秒钟然后再次冻结。
我发现这种行为特别奇怪,因为我根本没有覆盖 paintEvent,也没有调用 repaint/update 方法,但是游戏线程所做的是根据每个 RectItem 应该具有的状态更新每个 RectItem 的画笔颜色世代.
有什么可能导致这种情况的想法吗?
顺便说一句,这是在 Kubuntu 14.04.3/KWin 4.11.11/Qt 4.8.6 上运行
自己设法解决了!万一有人遇到同样的问题,我需要做的就是通过调用每一代 qgraphicsscene 的更新方法来安排更新(即在游戏线程上操作 graphicRects 之后)。
我认为奇怪的行为可能是试图保存 cpu 负载的结果,因为对于 gui 线程没有工作要做!
我一直在 PySide 中实现 Conways game of life [source]。到目前为止,它工作得很好,直到在某些情况下我还没有弄清楚,我用来显示网格的 QGraphicsView(它由 QGraphicsScene 上的几个 QGraphicsRectItems 组成)突然停止连续绘制。 window 的其余部分保持响应,游戏线程保持 运行 并发信号通知 ui 更新当前世代号。只有当 window 获得焦点时,graphicsView 更新大约一秒钟然后再次冻结。
我发现这种行为特别奇怪,因为我根本没有覆盖 paintEvent,也没有调用 repaint/update 方法,但是游戏线程所做的是根据每个 RectItem 应该具有的状态更新每个 RectItem 的画笔颜色世代.
有什么可能导致这种情况的想法吗?
顺便说一句,这是在 Kubuntu 14.04.3/KWin 4.11.11/Qt 4.8.6 上运行
自己设法解决了!万一有人遇到同样的问题,我需要做的就是通过调用每一代 qgraphicsscene 的更新方法来安排更新(即在游戏线程上操作 graphicRects 之后)。
我认为奇怪的行为可能是试图保存 cpu 负载的结果,因为对于 gui 线程没有工作要做!