Qt小部件停止接收paintevents

Qt小部件停止接收paintevents,qt,pyqt,pyside,Qt,Pyqt,Pyside,我一直在PySide中执行Conways生活游戏。到目前为止,它运行良好,直到在某种情况下,我还没有弄清楚,我用来显示网格的QGraphicsView(由QGraphicsCenter上的几个QGraphicsRectiitem组成)突然停止连续绘制。窗口的其余部分保持响应,游戏线程保持运行,并向用户界面发送信号以更新当前代号。只有当窗口获得焦点时,graphicsView才会更新约一秒钟,然后再次冻结 我发现这种行为特别奇怪,因为我根本不重写paintEvent,也不调用repaint/upd

我一直在PySide中执行Conways生活游戏。到目前为止,它运行良好,直到在某种情况下,我还没有弄清楚,我用来显示网格的QGraphicsView(由QGraphicsCenter上的几个QGraphicsRectiitem组成)突然停止连续绘制。窗口的其余部分保持响应,游戏线程保持运行,并向用户界面发送信号以更新当前代号。只有当窗口获得焦点时,graphicsView才会更新约一秒钟,然后再次冻结

我发现这种行为特别奇怪,因为我根本不重写paintEvent,也不调用repaint/update方法,但游戏线程所做的是根据每一代应该具有的状态更新每个RectItem的笔刷颜色

你知道是什么导致了这一切吗


顺便说一句,这是Kubuntu 14.04.3/KWin 4.11.11/Qt 4.8.6上的问题,我自己解决了!如果有人遇到同样的问题,我所需要做的就是通过每一代调用qgraphicscene的update方法来安排更新(即在从游戏线程操作graphicRect之后)


我认为这种奇怪的行为可能是试图节省cpu负载的结果,因为对于gui线程来说没有工作要做

在PyQt4中使用计算量大的后台线程和QGraphicsView时,我也有同样的问题。在PyQt5中,情况更糟,即使重新获得焦点也不会更新视图,而是需要调整窗口大小:P.您找到比自己的答案更好的解决方案了吗?