Profi_GMan
@Profi_GMan

Как исправить вылет QMessageBox при запуске из другого потока?

Доброго времени суток!
Очень странная проблемма: если из другого вызвать статические методы QMessageBox (information(), warning(), critical()), то приложение выдаёт runtime ошибку и падает, либо просто падает.
Пробовал в объекте основого потока сделать сигнал и слот для этого. Но как я понял, слот всё равно выполняется в другом потоке и снова ошибка.
Как быть?
Огромное заранее спасибо! Убил уже два дня на поиски решения проблеммы...
  • Вопрос задан
  • 562 просмотра
Решения вопроса 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
К наследникам QWidget можно обращаться только из главного потока.
Вам нужен слот надлежащий главному потоку, в который передавайте данные для сообщения, и в слоте вызывайте QMessageBox.

Подключать QObject::connect надо с двумя объектами или явно указать тип. Если третий параметр пропустить, то по умолчанию произойдет Qt::DirectConnection и слот выполниться в потоке сигнала.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы