Question

Pourquoi la boîte de dialogue ouverte est pas centrée à la fenêtre principale?

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

La documentation dit que devrait fonctionner est:

  

Cette fonction crée une boîte de dialogue modale avec le widget parent donné. Si le parent est de 0, la boîte de dialogue sera affiché centré sur le widget parent.

J'utilise QT 4.6.3 sous Windows XP SP2.

Était-ce utile?

La solution

Il est soit un bogue dans Qt ou une erreur dans la documentation. Si vous voulez une boîte de dialogue centrée, évitez les fonctions statiques et créer de dialogue ainsi:

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

Notez que celui-ci utilise la boîte de dialogue de fichier de Qt et non la boîte de dialogue de fichier natif.

Autres conseils

également dans la documentation est le suivant:

  

Sous Windows, le dialogue tourner une boucle d'événements modal de blocage qui ne distribue pas les QTimers, et si le parent est de 0 alors il positionnera la boîte de dialogue juste au-dessous de la barre de titre du parent.

Est-ce ce qui se passe? Sinon, je suppose que vous avez trouvé un bogue dans Qt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top