Как показать значок панели задач при использовании 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();
Другие вопросы по тегам