Я работаю над этим часами, не могу понять и не могу найти какую-либо помощь в сети, которая работает. По сути, суть того, чего я пытаюсь достичь, это иметь графический интерфейс Qt с кнопкой и QTextBrowser
. Когда я нажимаю кнопку, я хочу, чтобы она отображала сообщение, а затем продолжала печатать это сообщение каждые 10 секунд.
Я подумал, что буду использовать QTimer, потому что имеет смысл иметь таймер для отображения сообщения каждые 10 секунд. Когда я изначально реализовал это в моем слоте `buttonClicked (), это вызвало зависание программы. Я искал онлайн решение и нашел QApplication :: processEvents ().
Так что в основном в моей функции у меня было что-то вроде этого:
while(1)
{
QTimer *timer;
connect(...) //omitted parameters for this example
timer.start(10000);
ui->diplay->append("Message");
while(timer.isActive())
{
QApplication::processEvents()
}
}
Я полагал, что он вырвется из цикла timer.isActive (), но просто не останется там.
Итак, я решил, что это проблема с потоками. Поэтому я понял, как использовать QThreads, но до сих пор не могу заставить его работать. В основном, когда я создаю поток с таймером на нем, и поток сообщает таймеру о запуске, программа закрывается, и консоль говорит: «Программа неожиданно завершила работу».
Должен быть простой способ сделать это, но мой послужной список с Qt всегда был таким: