2015-09-26 122 views
1

我一直在PySide [source]中執行Conways遊戲。到目前爲止,它的效果很好,在某些情況下,我還沒有想到,我用QGraphicsView來顯示網格(它由QGraphicsScene中的幾個QGraphicsRectItems組成)會突然停止不斷繪製。窗口的其餘部分保持響應,並且遊戲線程繼續運行併發信號通知用戶界面更新當前世代號碼。只有當窗口獲得焦點時,graphicsView纔會更新約一秒鐘,然後再次凍結。Qt小部件停止接收paintevents

我發現這種行爲特別奇怪,因爲我不重寫paintEvent,也沒有調用repaint/update方法,但遊戲線程所做的是根據每一代應該擁有的狀態來更新每個RectItem的刷子顏色。

關於可能導致此問題的任何想法?

順便說一句,這是上的Kubuntu 14.04.3/KWin的11年4月11日/ QT 4.8.6

+0

我在PyQt4中使用計算繁重的後臺線程和QGraphicsView時遇到了同樣的問題。在PyQt5中,情況更糟,即使重新獲得焦點也不會更新視圖,而需要調整窗口大小:P。你有沒有找到比你自己的答案更好的解決方案? – architectonic

回答

1

管理,以解決它自己!如果有人遇到同樣的問題,我所需要做的就是通過調用每一代的qgraphicsscene的更新方法(即在從遊戲線程對graphicRects進行操作之後)來安排更新。

我認爲奇怪的行爲可能是嘗試保存cpu加載的結果,因爲對於gui線程來說沒有工作要做!