QMessageBox::critical, чтобы он оставался на вершине

В настоящее время я использую статическое окно сообщений под названием QMessageBox::critical(), и мне действительно нужно, чтобы оно оставалось поверх всех окон. У кого-нибудь есть идея, как это реализовать?

Нужна только статическая версия QMessageBox.

Заранее спасибо.


person Andrew Sheremetiev    schedule 22.05.2014    source источник
comment
blogs.msdn.com/b/oldnewthing/archive/ 2011/03/10/10138969.aspx   -  person Mat    schedule 22.05.2014
comment
Вы хотите, чтобы это окно сообщения было в верхней части всех окон, присутствующих на экране?   -  person Maxim Makhun    schedule 22.05.2014
comment
Итак, вы ненавидите своих пользователей, верно?   -  person Kuba hasn't forgotten Monica    schedule 22.05.2014


Ответы (1)


Со статическим методом QMessageBox::critical() это невозможно.

Вам придется использовать нестатическую версию, поэтому вы можете изменить флаги окна:

QMessageBox dlg(QMessageBox::Critical, tr("YourTitle"), tr("YourErrorMessage"));
dlg.setWindowFlags(dlg.windowFlags() | Qt::WindowStaysOnTopHint);
dlg.exec();

Обратите внимание, что по-прежнему нет гарантии, что оконный менеджер действительно применит этот параметр. (поэтому это называется подсказка)

Но... на мой взгляд, вы не должны этого делать - ни одно приложение (кроме самой операционной системы) не должно считать себя таким важным... Для ваших пользователей это может быть довольно раздражающим, так что делайте только это если в вашем случае ошибки невозможно или опасно продолжать работу со всей системой.

person MarioBlueSkies    schedule 22.05.2014