Почему QSplashScreen не центрируется при отображении? - PullRequest
0 голосов
/ 07 ноября 2018

Я создаю QSplashScreen в конструкторе QMainWindow:

MainApp::MainApp() : QMainWindow(),
    splashScreen(new QSplashScreen)
{
    splashScreen->setFixedSize(350, 120);
    //splashScreen->move(splashScreen->x()-175, splashScreen->y()-60); //inits with upperleft corner at screen center
    splashScreen->setWindowOpacity(0.85);
    splashScreen->setAttribute(Qt::WA_StyledBackground);
    splashScreen->setStyleSheet("QSplashScreen { background-color: #000;"
                                                "background-image: url('"+pathLogo+"');"
                                                "background-repeat: no-repeat;"
                                                "background-position: center;"
                                                "border: 2px solid #fac805; }");

        QLabel *vrsLbl = new QLabel(splashScreen);
        vrsLbl->resize(350, 13);
        vrsLbl->move(0, 80);
        vrsLbl->setPixmap(pxVersion);
        vrsLbl->setAlignment(Qt::AlignHCenter);

    splashScreen->show();
}

Заставка отображается с верхним левым углом в центре экрана. Простой обходной путь - переместить его (так как его размер известен), как указано выше.

Согласно документам :

В центре экрана появляется заставка.

Так что здесь не так?

1 Ответ

0 голосов
/ 07 ноября 2018

Я, возможно, был слишком быстр, чтобы отправить это как вопрос.

После некоторого тестирования я понял, что, очевидно, QSplashScreen не центрируется, когда в нем есть пустое QPixmap.

...