【发布时间】:2019-05-16 14:21:59
【问题描述】:
我创建了一个“flash”窗口以在应用程序启动期间显示图像。显示图像,在我派生的 QMainWindow 构造函数中设置标志:
setWindowFlags(Qt::CustomizeWindowHint
| Qt::FramelessWindowHint
| Qt::WindowStaysOnTopHint);
但是,当创建另一个窗口时,我可以将这个新窗口拖到我不想要的启动窗口前面。我希望拖动的窗口位于启动窗口后面,直到它被删除。
我在网上搜索,我设置的内容应该可以工作,但它没有。我正在使用基于 Qt 5.12.2 的 Qt Creator 4.9.0
我的系统是 iMAC(Retina 5K,27 英寸,2015 年末)。
[编辑] 我使用下面的代码来测试并证明我遇到的错误,我的应用程序窗口需要是模态的,但我希望启动窗口始终位于顶部。
#include <QMainWindow>
#include <QApplication>
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
QMainWindow * mw = new QMainWindow();
mw->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
mw->resize(500, 500);
mw->show();
QMainWindow * secondWindow = new QMainWindow();
secondWindow->setWindowModality(Qt::ApplicationModal); // <- This breaks the always on top flag
secondWindow->resize(500, 500);
secondWindow->show();
return app.exec();
}
我尝试将两个窗口都设置为模态窗口,但这也无济于事。
【问题讨论】:
-
您考虑过使用
QSplashScreen吗? -
@TrebledJ,可能有,但我最初是在前一段时间写的,它完全符合我的要求和需要,除了保持领先......这应该是可能的给定标志的名称。跨度>
-
你在它前面拖什么窗口?你创建的一个?您使用什么标志来创建另一个窗口?前面是否显示其他应用程序窗口?
-
@Nick,我希望我的应用程序创建的所有窗口都出现在启动画面后面。所有窗口的窗口都使用默认值,除了我发布的启动画面。
-
这个窗口可能不是问题,这就是我所得到的。你能显示正在创建的其他窗口的代码吗?
标签: c++ qt always-on-top