我在启动时的应用程序创建了一个“Splash Screen”,其中包含Open,New等快速访问按钮......此启动窗口位于屏幕中间,应用程序主窗口位于其后面。
以下是执行此操作的代码:
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();
}
但是,当应用程序在双显示器设置上运行时,我遇到了一些问题。会发生以下情况:无论应用程序何处启动,Splash屏幕始终在第一个屏幕上创建。因此,如果Window管理器决定在第二个屏幕上打开应用程序,那么启动画面将在第一个屏幕的中间很远......这非常难看:(
知道如何解决这个问题?
答案 0 :(得分:1)
尝试不使用小部件作为参数调用availableGeometry(),而是使用屏幕编号。像
这样的东西int screen = d->primaryScreen();
QRect t = d->availableGeometry(screen);
答案 1 :(得分:1)
如果您将初始屏幕作为子项添加到MainWindow,则应将其初始坐标设置为显示在其父级之上。