Подтвердить что ты не робот

Как установить выбранный фильтр на QFileDialog?

У меня есть диалог с открытым файлом с тремя фильтрами:

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

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

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

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

4b9b3361

Ответ 1

Вот так:

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

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

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