1

開いたダイアログがメインウィンドウの中央に配置されないのはなぜですか?

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

ドキュメントには、それが機能するはずだと書かれています。

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

WindowsXPSP2でQT4.6.3を使用しています。

4

2 に答える 2

1

また、ドキュメントには次のようなものがあります。

Windowsでは、ダイアログはQTimerをディスパッチしないブロッキングモーダルイベントループをスピンし、親が0でない場合は、ダイアログを親のタイトルバーのすぐ下に配置します。

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

于 2010-08-24T13:35:44.240 に答える
0

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のファイルダイアログを使用することに注意してください。

于 2010-08-24T16:12:51.480 に答える