1
我使用Qt 5.9打開文件對話框,要求用戶選擇一個圖像文件:QFileDialog結合MIME類型過濾器,以「全格式」
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類進行子類化?
setMimeTypeFilters只爲每個MIME類型使用QMimeType :: filterString。你可以自己做,然後添加另一個字符串,通過連接所有支持的MIME類型的QMimeType :: suffixes生成。雖然不是一個優雅的解決方案由於文件擴展名的數量很大,我也不知道它在實際對話框中的樣子。 – SteakOverflow