Почему qt show () не имеет приоритета? - PullRequest
0 голосов
/ 25 сентября 2018

Я использую Qt для приложения.Я хотел бы отобразить окно, затем поставить таймер и отобразить второе окно.Но в настоящее время таймер завершен, и одновременно открываются 2 окна

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

Я пробовал много решений, таких как вставка show () первого окна непосредственно в конструктор, но ничего не работает.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы используете блокирующий цикл while для ожидания истечения времени, поэтому поток GUI не может обновить пользовательский интерфейс.Вы можете использовать QTimer для неблокирующего ожидания или обновить графический интерфейс, добавив qApp->processEvents(QEventLoop::AllEvents, 100); в цикл while.

Я бы предпочел QTimer, потому что тогда вы не создаете свое собственное событиепетля.Например:

QTimer::singleShot(10000, this->secondWindow, SLOT(show()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...