Customize QFileDialog Filters
cugwanghp opened this issue · comments
Customize QFileDialog Filters
imageviewer open image file dialog
下面的代码是打开影像文件对话框的初始化,其中用到了MIME(Multipurpose Internet Mail Extensions)的类型。MIME可以理解为一个常用的文件扩展名词典(XML),按照数据类别组织划分的。如在MIME中就有iamge一类,只可惜对image的扩展名称中没有.img,因而就需要我们自己来添加。
static void initializeImageFileDialog(QFileDialog &dialog, QFileDialog::AcceptMode acceptMode)
{
static bool firstDialog = true;
if (firstDialog) {
firstDialog = false;
const QStringList picturesLocations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);
dialog.setDirectory(picturesLocations.isEmpty() ? QDir::currentPath() : picturesLocations.last());
}
QStringList mimeTypeFilters;
const QByteArrayList supportedMimeTypes = acceptMode == QFileDialog::AcceptOpen
? QImageReader::supportedMimeTypes() : QImageWriter::supportedMimeTypes();
foreach (const QByteArray &mimeTypeName, supportedMimeTypes)
mimeTypeFilters.append(mimeTypeName);
mimeTypeFilters.sort();
dialog.setMimeTypeFilters(mimeTypeFilters);
// 扩展图像后缀
QStringList nameFilters = dialog.nameFilters();
nameFilters << "所有图像文件 (*.img *.pix *.*)";
dialog.setNameFilters(nameFilters);
//
dialog.selectMimeTypeFilter("image/jpeg");
if (acceptMode == QFileDialog::AcceptSave)
dialog.setDefaultSuffix("jpg");
}