Вам нужно использовать 5-ю необязательную строку
Обычно я делаю это так:
#define JPEG_FILES "JPG files (*.jpg)"
#define BMP_FILES "BMP files (*.bmp)"
#define PNG_FILES "PNG files (*.png)"
QString selectedFilter;
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"/home/user/MyDocs/",
JPEG_FILES ";;" BMP_FILES ";;" PNG_FILES, &selectedFilter);
if (fileName.isNull())
return;
if (selectedFilter == JPEG_FILES) {
...
} else if (selectedFilter == BMP_FILES) {
...
} else if (selectedFilter == PNG_FILES) {
...
} else {
// something strange happened
}
Компилятор заботится о конкатенации буквенных строк в аргументе.
IЯ не уверен, как возвращаемая строка взаимодействует с tr()
.Вам придется проверить и выяснить.вероятно, нужно его перевести.
Возможно, было бы лучше, если бы функция возвращала индекс выбранного фильтра, но, увы, нет.
Лучше было бы поместить фильтры всписок, создать из него строку, а затем сравнить с возвращенной выбранной строкой фильтра с теми, что в списке.Это также решило бы проблему tr()
.