-1

我是 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;

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

4

1 回答 1

0

也许我不明白这个问题。如果在堆栈上创建 QStringList,它会在离开函数后被销毁。

所以这里有一个较短的版本:

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

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

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

于 2019-03-21T08:46:03.767 回答