2009-10-22 2 views
22

У меня есть диалоговое окно открытия файла с тремя фильтрами:Как установить выбранный фильтр на QFileDialog?

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

Это отображает диалоговое окно с «JPEG», выбранным в качестве фильтра по умолчанию. Я хотел поместить список фильтров в алфавитном порядке, чтобы «Все файлы» были первыми в списке. Если я это сделаю, «Все файлы» - это выбранный по умолчанию фильтр, который я не хочу.

Могу ли я установить выбранный по умолчанию фильтр для этого диалога или мне нужно перейти с первым указанным фильтром?

Я попытался указать 5-й аргумент (QString), чтобы установить выбранный по умолчанию фильтр, но это не сработало. Я думаю, что это может быть использовано только для получения фильтра, установленного пользователем.

ответ

36

Как это:

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

Я согласен, что документы (https://doc.qt.io/qt-4.8/qfiledialog.html#getOpenFileName) немного расплывчато об этом месте, но он только взял меня один попытаться угадать, как сделать это правильно.

Это один из случаев, когда нужно просто попробовать, а не задавать вопрос.

+0

Спасибо, я попытался встроить 5-й аргумент –

+4

Серьезно, не нужно быть суровым ... – DawidPi

Смежные вопросы