为什么qt show()没有优先级?

时间:2018-09-25 10:14:47

标签: c++ qt

我正在将Qt用于应用程序。 我想显示一个窗口,然后放置一个计时器并显示第二个窗口。 但目前计时器已完成,然后两个窗口同时打开

this->firstWindow->show();
QTime dieTime = QTime::currentTime().addSecs(10);
while (QTime::currentTime() < dieTime);
this->secondWindow->show();

我尝试了很多解决方案,例如将firstwindow的show()直接放入构造函数中,但是没有任何效果。

1 个答案:

答案 0 :(得分:3)

您正在使用阻塞while循环来等待时间过去,因此GUI线程无法更新用户界面。您可以使用QTimer进行无阻塞等待,也可以通过将qApp->processEvents(QEventLoop::AllEvents, 100);添加到while循环中来刷新GUI。

我希望使用QTimer,因为那样您就不会创建自己的事件循环。例如:

QTimer::singleShot(10000, this->secondWindow, SLOT(show()));