Как мне создать функцию паузы / ожидания, используя Qt? - PullRequest
65 голосов
/ 20 сентября 2010

Я играю с Qt и хочу создать простую паузу между двумя командами. Однако, похоже, он не позволит мне использовать Sleep(int mili);, и я не могу найти очевидных функций ожидания.

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

Ответы [ 12 ]

1 голос
/ 31 августа 2016

@ kshark27 ответ по какой-то причине у меня не сработал (потому что я использую Qt 5.7?), Поэтому я закончил тем, что сделал:

while (someCondition) {

   // do something

   QApplication::processEvents();
   QThread::sleep(1); // 1 second

};

Если это делается в потоке графического интерфейса, он, очевидно, вводит задержку в 1 секунду перед реагированием на пользовательские события. Но если вы можете с этим смириться, это решение, вероятно, проще всего реализовать, и даже Qt одобряет его в своей статье Основы потоков (см. Когда использовать альтернативы потокам раздел).

1 голос
/ 21 сентября 2010

Если вам нужен кроссплатформенный метод для этого, общая схема - это наследовать от QThread и создать функцию (статическую, если хотите) в вашем производном классе, которая будет вызывать одну из спящих функций в QThread..

...