0

所以我有以下代码:

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 在任务栏中有一个图标。

先感谢您!

4

1 回答 1

1

有点晚了,但我遇到了同样的问题并直接使用 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();
于 2020-06-25T09:12:33.360 回答