QDir.setNameFilter 如何仅显示具有特定扩展名的文件?

问题描述 投票:0回答:3

setNameFilters 没有按我的预期工作,所以如果有人可以解释我是否错误地使用了它,或者这可能是 Qt 中的错误:

这是我的代码示例:

QDir export_folder("C:\path");
QStringList fileList = export_folder.setNameFilters(QStringList()<<"*.exe");

处理后 fileList 包含字符串“test.exe1”

我希望 fileList 仅包含扩展名为 .exe 而不是 .exe* 的文件。

如果我想要比 .exe 更长的文件扩展名,我希望将

"*.exe*"
作为我的过滤器。

有人可以帮助澄清吗,还是我必须在事后手动处理我的文件列表?

c++ qt filter qdir
3个回答
23
投票

对于初学者来说,

setNameFilters
不会返回
QStringList
,它什么也不返回。您的代码应如下所示:

QDir export_folder("C:\\path");
export_folder.setNameFilters(QStringList()<<"*.exe");
QStringList fileList = export_folder.entryList();

在使用 Qt 5.0.1 的 Linux 中,过滤按预期工作(不返回以“exe2”结尾的文件)。


4
投票

此外,如果您想显示具有多种扩展名的文件,您可以执行以下操作。

export_folder.setNameFilters( QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg" );

0
投票

试试这个

export_folder.setNameFilters(QStringList {"*.exe1 *.exe2 *.exe3", "EXE1 (*.exe1)", "EXE23 (*.exe2 *.exe3)"});
© www.soinside.com 2019 - 2024. All rights reserved.