@ kshark27 ответ по какой-то причине у меня не сработал (потому что я использую Qt 5.7?), Поэтому я закончил тем, что сделал:
while (someCondition) {
// do something
QApplication::processEvents();
QThread::sleep(1); // 1 second
};
Если это делается в потоке графического интерфейса, он, очевидно, вводит задержку в 1 секунду перед реагированием на пользовательские события. Но если вы можете с этим смириться, это решение, вероятно, проще всего реализовать, и даже Qt одобряет его в своей статье Основы потоков (см. Когда использовать альтернативы потокам раздел).