2017-04-09 2 views
0

Momentan kann ich einen Ordner mit der QFileDialoggetExistingDirectory Funktion auswählen. Selbst wenn ich es geschafft habe, dass der Dialog auch die Dateien anzeigt, möchte ich sie filtern, d. H. Nur Ordner und *.mp3 Dateien anzeigen.Zeige MP3-Dateien, aber wähle Ordner mit QFileDialog

QString folder = QFileDialog::getExistingDirectory(this, "test", "", QFileDialog::ReadOnly); 

Ist dies möglich, ohne einen benutzerdefinierten Dialog zu erstellen?

Antwort

2
QFileDialog d(this); 
d.setFileMode(QFileDialog::Directory); 
d.setNameFilter("*.mp3"); 
if (d.exec()) 
    qDebug() << d.selectedFiles(); 
+0

Mein Hauptfenster ist im Vollbildmodus. Mit 'getExistingDirectory' erscheint der Dialog, aber der Fokus liegt immer noch auf dem' MainWindow'. – NaCl

+0

Und wenn Sie 'this' zum Konstruktor von' QFileDialog' hinzufügen? (siehe editierter Beitrag) – m7913d

+0

Was für ein dummer Fehler! Vielen Dank! – NaCl

0

Ich bin jetzt auf Handy rt. Nur eine Art von Hinweisen ....

Unter Windows und MacOS verwendet diese statische Funktion den nativen Dateidialog und keinen QFileDialog. Der native Windows-Dateidialog unterstützt jedoch nicht die Anzeige von Dateien in der Verzeichnisauswahl. Sie müssen DontUseNativeDialog übergeben, um Dateien mit einem QFileDialog anzuzeigen. (Von QFileDialog Dokumentation)

So stellen Sie die 'QFileDialog :: DontUseNativeDialog' Option 'setflags'

Dann Datei-Dialog des 'setfilter' verwenden setzen Sie den Filter für Ihre MP3-Dateien ..

+0

Sie Sie müssen 'QFileDialog :: DontUseNativeDialog' nicht manuell einstellen, da Qt selbst sich dafür entscheidet, das native Dialogfeld nicht zu verwenden. – m7913d

+0

Hmmm .... das Dokument ist etwas irreführend .... danke trotzdem .. – Naidu

Verwandte Themen