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()
ます。