2009-10-22 3 views
22

mam otwarty dialog plików z trzech filtrów:Jak ustawić wybrany filtr w QFileDialog?

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

Spowoduje to wyświetlenie okna dialogowego z „JPEG” wybrany jako domyślny filtr. Chciałem umieścić listę filtrów w kolejności alfabetycznej, więc "Wszystkie pliki" były na pierwszej liście. Jeśli jednak to zrobię, "Domyślny wybrany filtr" to wszystkie pliki, których nie chcę.

Czy mogę ustawić domyślny wybrany filtr dla tego okna dialogowego, czy też muszę przejść z pierwszym określonym filtrem?

Próbowałem określając piąty argument (QString), aby ustawić domyślny wybrany filtr, ale to nie zadziałało. Myślę, że można to wykorzystać tylko do pobrania filtra ustawionego przez użytkownika.

Odpowiedz

36

Jak to:

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

zgadzam się, że docs (https://doc.qt.io/qt-4.8/qfiledialog.html#getOpenFileName) są nieco niejasne o tym miejscu, ale to tylko zajęło mi próbować odgadnąć, jak to zrobić prawo.

Jest to jeden przypadek, w którym szybciej jest po prostu spróbować, niż zadać pytanie.

+0

Dzięki, próbowałem wprowadzić 5-szy arg –

+4

Poważnie, nie trzeba być szorstkim ... – DawidPi