setNameFilters 没有按我的预期工作,所以如果有人可以解释我是否错误地使用了它,或者这可能是 Qt 中的错误:
这是我的代码示例:
QDir export_folder("C:\path");
QStringList fileList = export_folder.setNameFilters(QStringList()<<"*.exe");
处理后 fileList 包含字符串“test.exe1”
我希望 fileList 仅包含扩展名为 .exe 而不是 .exe* 的文件。
如果我想要比 .exe 更长的文件扩展名,我希望将
"*.exe*"
作为我的过滤器。
有人可以帮助澄清吗,还是我必须在事后手动处理我的文件列表?
对于初学者来说,
setNameFilters
不会返回QStringList
,它什么也不返回。您的代码应如下所示:
QDir export_folder("C:\\path");
export_folder.setNameFilters(QStringList()<<"*.exe");
QStringList fileList = export_folder.entryList();
在使用 Qt 5.0.1 的 Linux 中,过滤按预期工作(不返回以“exe2”结尾的文件)。
此外,如果您想显示具有多种扩展名的文件,您可以执行以下操作。
export_folder.setNameFilters( QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg" );
试试这个
export_folder.setNameFilters(QStringList {"*.exe1 *.exe2 *.exe3", "EXE1 (*.exe1)", "EXE23 (*.exe2 *.exe3)"});