您需要使用第 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
}
编译器注意连接参数中的文字字符串。
我不确定返回的字符串如何与tr()
. 你必须测试并找出答案。可能需要取消翻译它。
如果该函数返回所选过滤器的索引可能会更好,但可惜它没有。
一个更好的解决方案是将过滤器放在一个列表中,从中创建一个字符串,然后将返回的选定过滤器字符串与列表中的字符串进行比较。这也将解决tr()
问题。