我正在用qt / opengl写一个俄罗斯方块游戏。
游戏部分是事件驱动的(Game class,它是一个QGLWidget),另一部分是QThread(GameLogic类)。当我尝试将这个小部件放在一个带有'menu'小部件的父小部件中时,我的问题出现了。即使我将游戏窗口小部件paintGL()方法的信号发送到父窗口小部件以刷新自身(父窗口),也没有任何反应,我的应用程序看起来像是冻结了。
虽然当我尝试使用resize()而不是repaint()时,父窗口小部件会调整大小(我猜也会刷新),我们可以看到游戏已经走了多远。
所以基本上我的游戏小部件和线程工作正常,但我没有设法让父小部件简单地更新自己(如果这是问题)。我尝试了update(),repaint(),它们都是QCoreApplication::processEvents()
,并且还连接了QueuedConnection和DirectConnection。虽然父母似乎没有更新,但我收到了一堆“递归重绘”错误消息。