Qt:如何在paintEvent中使用sleep()

Cur*_*ase 0 qt

我正在创建一个应用程序,其中我在paintevent中使用循环绘制四个矩形.我希望每个矩形必须在500ms后绘制.因为我正在应用msleep().但是每当我运行应用程序时使用它,它挂起2000毫秒然后同时绘制所有矩形.任何人都告诉我这个问题的解决方案,以便在延迟后绘制每个矩形.谢谢.

laa*_*lto 5

不要使用sleep/msleeppaintEvent().您希望快速处理事件,而不是在函数调用中花费2秒钟.线程在运行事件处理代码时无法处理任何其他事件.

在这种简单的情况下,您可以使用a QTimer每500毫秒接收四次信号.在处理槽中,更新成员变量以指示要update()在窗口小部件上绘制和调用的矩形数.然后在小部件中paintEvent(),检查成员变量,绘制矩形并尽快返回.

(有关更复杂的动画需求,请查看QTimeLine.)