在2个屏幕上正确放置QT启动屏幕



我的应用程序在启动时创建了一个"启动屏幕",带有打开、新建等快速访问按钮。这个启动窗口位于屏幕中间,应用程序主窗口位于其后。

以下是代码:

void MainWindowButtonDialog::showMe()
{
    setModal(false);
    setWindowFlags(
        #ifdef Q_WS_WIN
            Qt::SplashScreen |
        #endif
            Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
    QDesktopWidget *d = QApplication::desktop();
    QRect t = d->availableGeometry(this);
    move(mapToGlobal(this->geometry().topLeft()).x() + t.center().x() - width() / 2, 
         t.center().y()- height() / 2);
    show();
    raise();
}

但是,当应用程序在两个监视器上运行时,我会遇到一些问题。发生的情况如下:无论应用程序从哪里启动,启动屏幕都始终在第一个屏幕上创建。因此,如果窗口管理器决定在第二个屏幕上打开应用程序,启动屏幕将远离第一个屏幕的中间。。。这很难看:(

知道怎么解决这个问题吗?

如果将启动屏幕作为子屏幕添加到MainWindow,则应设置其初始坐标,使其显示在其父屏幕的正上方。

尝试调用available Geometry(),不要使用小部件作为参数,而是使用屏幕编号。类似的东西

int screen = d->primaryScreen();
QRect t = d->availableGeometry(screen);

最新更新