私は、画像ファイルを選択するようにユーザに尋ねるファイルダイアログを開くためにはQt 5.9を使用していますし、MIMEタイプのフィルタを組み合わせる:QFileDialogは「すべてのフォーマット」
QStringList mimeTypeFilters;
const QByteArrayList supportedMimeTypes = QImageReader::supportedMimeTypes();
foreach(const QByteArray& mimeTypeName, supportedMimeTypes) {
mimeTypeFilters.append(mimeTypeName);
}
mimeTypeFilters.sort();
QFileDialog* fileDialog = new QFileDialog(this, "Select image");
fileDialog->setMimeTypeFilters(mimeTypeFilters);
fileDialog->setFileMode(QFileDialog::ExistingFile);
fileDialog->exec();
すべてのサポートされているイメージ形式はへのMIMEタイプフィルタとして追加されますこのダイアログは非常にうまく動作しています。ただし、画像を選択する前に正しいフォーマットを選択すると、サポートされているフォーマットのいずれかの画像を選択できるようにする追加のフィルタ(「すべてのフォーマット」や「すべてサポート」など)を追加したい。どのようなQtクラスをサブクラス化することなく、これを達成する最も洗練されたソリューションは何ですか? SteakOverflowさんのコメントに
setMimeTypeFiltersは、各MIMEタイプに対してQMimeType :: filterStringを使用します。これを自分で行い、サポートされているすべてのMIMEタイプに対してQMimeType ::サフィックスを連結して生成する別の文字列を追加できます。しかし、エレガントなソリューションではありません。ファイル拡張子の数がかなり多いので、実際のダイアログでどのように見えるかもわかりません。 – SteakOverflow