Диалог getOpenFileNames не центрирован по главному окну - PullRequest
1 голос
/ 24 августа 2010

Почему открытый диалог не центрирован по главному окну?

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

В документации сказано, что это должно работать:

Эта функция создает диалог модального файла с заданным родительским виджетом. Если parent не равен 0, диалоговое окно будет отображаться по центру родительского виджета.

Я использую QT 4.6.3 в Windows XP SP2.

Ответы [ 2 ]

1 голос
/ 24 августа 2010

Также в документации есть следующее:

В Windows диалоговое окно будет вращать блокирующий модальный цикл событий, который не будет отправлять какие-либо QTimers, и если parent не равен 0тогда он разместит диалог чуть ниже строки заголовка родителя.

Это то, что происходит?Если нет, то я думаю, что вы нашли ошибку в Qt.

0 голосов
/ 24 августа 2010

В 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, а не диалоговое окно собственного файла.

...