2016-03-24 4 views
0

Я использую Qt5.5 и написал приложение, я хотел бы использовать QErrorMessage для отображения ошибки, если она встречается во время запуска приложения.Qt5.5 Почему сообщение об ошибке не отображается?

Я добавил:

QErrorMessage errmsg(this); 
    errmsg.showMessage("HELLO WORLD"); 

Этот код был вставлен в конце моего главного окна конструктора, не отображается ничего, почему?

ответ

1

В документации вы можете прочитать:

показывает данное сообщение, сообщение, и немедленно возвращается. Если пользователь запросил, чтобы сообщение не отображалось снова, эта функция ничего не делает.

Это означает, что как только 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(). Это наиболее полезно в средах , где консоль недоступна для отображения предупреждений и сообщений об ошибках .

+0

Благодарим вас, возможно, это связано с тем, что мое приложение заканчивается, я хотел бы, чтобы сообщение появилось пользователю в результате проблемы во время запуска, приложение не может работать. Если приложение умирает, это предотвратит отображение сообщения об ошибке? – SPlatten

+1

Да, было бы. Для этого вам придется использовать 'QMessageBox :: critical'. Это блокирующий вызов, который будет ждать, пока пользователь не закроет диалог. – Felix

Смежные вопросы