【发布时间】:2013-08-21 07:56:51
【问题描述】:
我的应用程序在启动时会创建一种“启动画面”,其中包含打开、新建等快速访问按钮...这个启动窗口位于屏幕中间,应用程序主窗口位于其后面.
这是执行此操作的代码:
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();
}
但是,当应用程序在两个显示器设置上运行时,我遇到了一些问题。发生的情况如下:无论应用程序从何处启动,启动画面总是在第一个屏幕上创建。因此,如果窗口管理器决定在第二个屏幕上打开应用程序,则初始屏幕将在第一个屏幕的中间很远......这很丑:(
知道如何解决这个问题吗?
【问题讨论】:
-
“启动画面的种类” - 你没有使用 QSplashScreen 小部件吗?
-
不,只是显示一个“顶级”窗口,因为我还希望应用程序主窗口在“启动画面”存在时可以访问,并且在主窗口的第一个有意义的操作时启动消失。
-
窗口是主窗口的子窗口,还是独立的?
-
@Merlin069 这是一个独立的窗口
-
你可以添加它作为一个孩子吗?
标签: qt window splash-screen