Qt 如何在所有窗口顶部显示QMessageBox

Qt 如何在所有窗口顶部显示QMessageBox,qt,dialog,qmessagebox,Qt,Dialog,Qmessagebox,我已经创建了一个程序,在全屏模式下与应用程序一起运行。我希望我的程序中的QMessageBox显示在全屏运行的应用程序顶部 平台是Windows7,我使用的是Qt 我试过: QMessageBox *msgBox = new QMessageBox; msgBox->setParent(0); msgBox->setWindowTitle(title); msgBox->setText(text); msgBox->setWindowFlags(Qt::WindowSta

我已经创建了一个程序,在全屏模式下与应用程序一起运行。我希望我的程序中的QMessageBox显示在全屏运行的应用程序顶部

平台是Windows7,我使用的是Qt

我试过:

QMessageBox *msgBox = new QMessageBox;
msgBox->setParent(0);
msgBox->setWindowTitle(title);
msgBox->setText(text);
msgBox->setWindowFlags(Qt::WindowStaysOnTopHint);
msgBox->show();
没有运气。有什么提示吗?

试试
msgBox->raise()
将在任务栏中使用
setWindowFlags(Qt::WindowStaysOnTopHint)通知用户您最终可以使它保持在顶部(evtl.minimize/restore)。

但是,根据设计,不依赖操作系统的windowmanager不应允许任何应用程序从另一个应用程序“窃取”焦点,因此用户仍然需要激活(单击)您的窗口以获得焦点。

您需要使用exec(),因此调用:
msgBox->exec()取而代之。谢谢,但不幸的是它没有工作。该窗口位于当前活动窗口之后。然后,将按摩盒的父窗口设置为当前活动窗口。全屏运行的应用程序不是我的。我可以用Qt将父窗口设置为活动窗口,还是必须使用winapi?可以。而不是
msgBox->setParent(0)中的null您需要设置指向活动窗口的指针。你能得到它吗?那个窗户是什么?请提供更多详细信息。这很有道理,塞巴斯蒂安,不幸的是,“raise()”也不起作用。我道歉。我的测试场景中的行为似乎有所不同。你的解决方案确实奏效了。非常感谢。