Как показать значок панели задач при использовании QSplashScreen
Итак, у меня есть следующий код:
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 был значок на панели задач.
Заранее спасибо!
0 ответов
Немного поздно, но я столкнулся с той же проблемой и исправил ее напрямую с помощью 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();