2009-10-22 5 views
22

J'ai une boîte de dialogue de fichier ouvert avec trois filtres:Comment définir le filtre sélectionné sur QFileDialog?

QString fileName = QFileDialog::getOpenFileName(
     this, 
     title, 
     directory, 
     tr("JPEG (*.jpg *.jpeg);; TIFF (*.tif);; All files (*.*)") 
); 

Cette affiche une boîte de dialogue avec « JPEG » sélectionné comme filtre par défaut. Je voulais mettre la liste des filtres dans l'ordre alphabétique de sorte que "Tous les fichiers" était en tête de liste. Si je fais cela cependant, "Tous les fichiers" est le filtre sélectionné par défaut - que je ne veux pas. Puis-je définir le filtre sélectionné par défaut pour cette boîte de dialogue ou dois-je utiliser le premier filtre spécifié?

J'ai essayé de spécifier un 5ème argument (QString) pour définir le filtre sélectionné par défaut mais cela n'a pas fonctionné. Je pense que cela pourrait seulement être utilisé pour récupérer le filtre qui a été défini par l'utilisateur.

Répondre

36

Comme ceci:

QString selfilter = tr("JPEG (*.jpg *.jpeg)"); 
QString fileName = QFileDialog::getOpenFileName(
     this, 
     title, 
     directory, 
     tr("All files (*.*);;JPEG (*.jpg *.jpeg);;TIFF (*.tif)"), 
     &selfilter 
); 

Je partage que les docs (https://doc.qt.io/qt-4.8/qfiledialog.html#getOpenFileName) sont un peu vague sur ce point, mais il ne m'a fallu un essayer de deviner comment faire ce droit.

Il s'agit d'un cas où il est plus rapide de simplement essayer que de poser une question.

+0

Merci, j'ai essayé d'intégrer le 5ème arg –

+4

Sérieusement, pas besoin d'être dur ... – DawidPi