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