筛选 QFileDialog 中显示的目录

Filtering directories displayed in a QFileDialog

本文关键字:显示 QFileDialog 筛选      更新时间:2023-10-16

我有一个现有的QFileDialog,使用getExistingDirectory方法,我正在尝试修改该方法以过滤掉某些目录。现在,显示了目标位置的所有目录,但是我将有一个需要过滤的目录名称列表/数组(即:我只想显示这些目录,而不是其他目录(。

现在,这是创建文件对话框的方式:

QString dirpath = MvsFileDialog::getExistingDirectory(result_code,
this,
tr("Select Training"),        //title
tr("Library from list"), //subtitle
library,       //starting dir
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); //options

MvsFileDialog 类只是 QFileDialog 类的扩展。

我将如何修改此方法调用以过滤列表中的目录?

您是否检查过在 QFileDialog 上设置名称过滤器是否有效?

https://doc.qt.io/qt-5/qfiledialog.html#setNameFilter

像这样:

auto dialog = QFileDialog(parent, tr("Select Training"), library, "dir1;dir2");
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

构造函数中的第 4 个参数是名称过滤器,也可以使用 QFileDialog::setNameFilter(const QString &filter( 进行设置;