В документации вы можете прочитать:
показывает данное сообщение, сообщение, и немедленно возвращается. Если пользователь запросил, чтобы сообщение не отображалось снова, эта функция ничего не делает.
Это означает, что как только errmsg
будет уничтожен, сообщения больше не будут отображаться. Вы должны использовать QErrorMessage
класс в качестве члена/глобальной переменной:
this->errmsg = new QErrorMessage(this);
this->errmgs->showMessage("HELLO WORLD");
В качестве альтернативы, вы можете использовать QErrorMessage::qtHandler()
- это возвращает глобальный экземпляр обработчика сообщений об ошибке:
QErrorMessage::qtHandler()->showMessage("HELLO WORLD");
Но если вы сделаете это следует помнить, что QDebug будет использовать это, так:
статическая qtHandler() функция устанавливает обработчик сообщений с использованием qInstallMessageHandler() и создает QErrorMessage, который отображает qDebug(), qWarning() и qFatal(). Это наиболее полезно в средах , где консоль недоступна для отображения предупреждений и сообщений об ошибках .
Благодарим вас, возможно, это связано с тем, что мое приложение заканчивается, я хотел бы, чтобы сообщение появилось пользователю в результате проблемы во время запуска, приложение не может работать. Если приложение умирает, это предотвратит отображение сообщения об ошибке? – SPlatten
Да, было бы. Для этого вам придется использовать 'QMessageBox :: critical'. Это блокирующий вызов, который будет ждать, пока пользователь не закроет диалог. – Felix