Программа: Виджет, имеющий большое количество label с текстом.
Из MainWindow вызывается поток (jthread, 20 std) и в него передается ссылка на ui для обновления текста label.
В потоке работает цикл в котором мы получаем данные от сервера и помещаем их в label таким образом:
ui->label->setText(useful_data);
После того как получили данные, ждем минуту и повторяем. Ожидание реализовано через this_thread::sleep_for(s).
По непонятным мне причинам, иногда виджет зависает, видимо вместе и потоком и перестает; запрашивать данные, и обновлять их соответственно. Никаких ошибок при этом нет, виджет просто остается в состоянии последнего обновления(со старыми данными).
Зависание происходит всегда, виджет может отработать как 2 часа не зависая, так и все 12. Думаю важной деталью будет сообщить флаги окна:
setWindowFlags(Qt::SubWindow | Qt::Window | Qt::FramelessWindowHint);
* Qt::SubWindow тут существует для скрытия иконки приложения на панели задач, т.к программа работает как виджет. Зависания происходят и с другими флагами, такими как: Qt::Tool, Qt::ToolTip и т.д.
Я новичок в QT Widget, так что изложил как могу.