如何在QFileDialog上设置选定的过滤器?

时间:2009-10-22 00:42:24

标签: c++ qt qt4

我有一个包含三个过滤器的打开文件对话框:

QString fileName = QFileDialog::getOpenFileName(
        this,
        title,
        directory,
        tr("JPEG (*.jpg *.jpeg);; TIFF (*.tif);; All files (*.*)")
);

这将显示一个选中“JPEG”作为默认过滤器的对话框。我想按字母顺序排列过滤器列表,因此“所有文件”在列表中排在第一位。但是,如果我这样做,“所有文件”是默认选择的过滤器 - 我不想要。

我可以为此对话框设置默认选定的过滤器,还是必须使用第一个指定的过滤器?

我尝试指定第5个参数(QString)来设置默认选定的过滤器,但这不起作用。我认为这可能只用于检索用户设置的过滤器。

2 个答案:

答案 0 :(得分:44)

像这样:

QString selfilter = tr("JPEG (*.jpg *.jpeg)");
QString fileName = QFileDialog::getOpenFileName(
        this,
        title,
        directory,
        tr("All files (*.*);;JPEG (*.jpg *.jpeg);;TIFF (*.tif)" ),
        &selfilter 
);

docs对此有点模糊,所以我通过猜测发现了这一点。

答案 1 :(得分:0)

这是所有支持QT的图像格式的字符串。

"All files (*.*);;BMP (*.bmp);;CUR (*.cur);;GIF (*.gif);;ICNS (*.icns);;ICO (*.ico);;JPEG (*.jpeg);;JPG (*.jpg);;PBM (*.pbm);;PGM (*.pgm);;PNG (*.png);;PPM (*.ppm);;SVG (*.svg);;SVGZ (*.svgz);;TGA (*.tga);;TIF (*.tif);;TIFF (*.tiff);;WBMP (*.wbmp);;WEBP (*.webp);;XBM (*.xbm);;XPM (*.xpm)"