qtqt4centeringfileopendialogopendialog

getOpenFileNames dialog is not centered to the main window


Why the opened dialog is not centered to the main window?

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

The documentation says that is should work:

This function creates a modal file dialog with the given parent widget. If parent is not 0, the dialog will be shown centered over the parent widget.

I use QT 4.6.3 on Windows XP SP2.


Solution

  • There is either a bug in the Qt or an error in the documentation. If you want a centered dialog, avoid the static functions and create dialog this way:

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

    Note that this uses the Qt's file dialog and not the native file dialog.