所以我有以下代码:
QString splashImageFilePath = ":/images/Splashscreens/startup.png";
QSplashScreen * splash = new QSplashScreen();
splash->setPixmap(QPixmap(splashImageFilePath));
splash->show();
splash->raise();
这运行良好,启动屏幕的显示与我想要的完全一样,但它没有在任务栏中显示图标,因此可以单击另一个窗口,并且永远无法再次看到启动栏(它隐藏在其他窗户后面)。
我已经尝试过使用窗口标志
Qt::WindowStaysOnTopHint
,但如果我使用它,任务栏中仍然没有图标,而且现在它始终位于所有其他窗口的顶部(我不想要)。到目前为止,我已经浏览了一些窗口标志,并在谷歌上搜索了很长一段时间,我试图展示它。
另外,我知道我可以给构造函数一个父窗口,但是这段代码位于
main.cpp
内部,所以我没有办法给它一个父窗口(带有空构造函数的 QWidget 也不起作用) .TLDR:我希望我的 QSplashScreen 在任务栏中有一个图标。
提前谢谢您!
有点晚了,但我遇到了同样的问题并直接使用 WinAPI 修复了它:
QSplashScreen splash;
splash.setPixmap(QPixmap(splashImageFilePath));
// ensure that taskbar icon is shown while the splash screen is active
int exstyle = GetWindowLong(reinterpret_cast<HWND>(splash.winId()), GWL_EXSTYLE);
SetWindowLong(reinterpret_cast<HWND>(splash.winId()), GWL_EXSTYLE, exstyle & ~WS_EX_TOOLWINDOW);
splash.show();
splash->setWindowFlag(Qt::Tool, false);
splash->show();