質問

開くダイアログがメインウィンドウの中心になっていないのはなぜですか?

void MainWindow::on_FileOpenAction_triggered()
{
    QStringList fileNames = QFileDialog::getOpenFileNames(
        this, 
        "Open Image",
        QApplication::applicationDirPath(), 
        "Images (*.jpg);;All Files (*.*)"
    );
}

ドキュメントは、それが機能するはずだと言っています:

この関数は、指定された親ウィジェットを使用してモーダルファイルダイアログを作成します。親が0でない場合、ダイアログが親ウィジェットの中心に表示されます。

Windows XP SP2でQT 4.6.3を使用しています。

役に立ちましたか?

解決

QTにバグまたはドキュメントにエラーがあります。中央ダイアログが必要な場合は、静的関数を避け、この方法でダイアログを作成します。

QFileDialog dialog(
    this, 
    "Open Image",
    QApplication::applicationDirPath(),
    "Images (*.jpg);;All Files (*.*)");
dialog.setFileMode(QFileDialog::ExistingFiles);
QStringList fileNames;
if (dialog.exec())
    fileNames = dialog.selectedFiles();

これは、ネイティブファイルダイアログではなく、QTのファイルダイアログを使用することに注意してください。

他のヒント

また ドキュメンテーション 次のとおりです。

Windowsでは、ダイアログがQTIMERSを派遣しないブロッキングモーダルイベントループを回転させ、親が0でない場合、ダイアログを親のタイトルバーのすぐ下に配置します。

これは何が起こっているのですか?そうでない場合は、QTでバグを見つけたと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top