是否存在在 EntryList() 中使用过滤器的更简单方法?

Does simplier way to use filters in EntryList() exist?

我是 Qt 的新手。我的目录中有两种类型的文件。首先,我需要使用一种类型,然后再使用另一种。我决定将 EntryList() 与名称过滤器一起使用,例如“.png”和“.txt”,并且效果很好。

但是此方法需要使用 QStringList() 类型作为输入的过滤器。所以我想知道我能不能用更简单的方法来做,因为我不会多次使用这个过滤器,所以我不想在我的记忆中保留另一个列表。

我现在是怎么做的:

QStringList png_filter("*.png");
QStringList frst_filter = Dir.entryList(png_filter);
QStringList txt_filter("*.txt");
QStringList scnd_filter = Dir.entryList(txt_filter);
cout<<frst_filter.size()<<"  "<<scnd_filter.size()<<endl;

或者:

QStringList filter;
filter.push_back("*.png");
frst_filter = Dir.entryList(filter);
filter.pop_back();
filter.push_back("*.txt");
scnd_filter = Dir.entryList(filter);
cout<<frst_filter.size()<<"  "<<scnd_filter.size()<<endl;

P.S。 在这里找不到有用的信息:https://doc.qt.io/qt-5/qdir.html#entryList

可能是我没看懂问题。如果在栈上创建QStringList,离开函数后会销毁。

所以这是一个较短的版本:

Dir.enryList(QStringList() << "*.png" << "*.txt");

如果您使用 C++11 或更高版本,您可以使用初始化列表:

Dir.enryList({"*.png", "*.txt"});