2010-08-24 7 views
1

Pourquoi la boîte de dialogue ouverte n'est pas centrée sur la fenêtre principale?La boîte de dialogue getOpenFileNames n'est pas centrée sur 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 qui est devrait fonctionner:

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

J'utilise QT 4.6.3 sous Windows XP SP2.

Répondre

0

Il y a 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 ainsi de dialogue:

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 cette boîte de dialogue utilise le fichier de Qt et non la boîte de dialogue de fichier natif.

+0

Je suppose qu'il n'y a pas d'option pour une solution native-centrée. De toute façon que pour le poste. –

1

également dans le 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 la barre de titre du parent.

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

+0

C'est exactement ce qui se passe. Y a-t-il un moyen de l'éviter? Je suppose que je devrais expérimenter la construction de la boîte de dialogue au lieu d'utiliser la routine getOpenFileNames() de hendy helper. –

+0

@Gad D Seigneur: La seule façon que je connaisse serait de sauter la routine d'aide et de positionner la boîte de dialogue vous-même. –

Questions connexes