アプリケーションの起動時に、開く、新規などへのクイック アクセス ボタンを備えた一種の「スプラッシュ スクリーン」が作成されます。このスプラッシュ ウィンドウは画面の中央に配置され、アプリケーションのメイン ウィンドウはその背後に配置されます。
これを行うコードは次のとおりです。
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();
}
ただし、アプリケーションを 2 つのモニター設定で実行すると、いくつかの問題が発生します。何が起こるかは次のとおりです。スプラッシュ画面は、アプリケーションの開始場所に関係なく、常に最初の画面に作成されます。そのため、ウィンドウ マネージャが 2 番目の画面でアプリケーションを開くことにした場合、スプラッシュ スクリーンは最初の画面の中央から遠く離れた場所に表示されます...これはかなり醜いです :(
これをどのように修正できますか?