当我通过QDir :: entryInfoList列出条目时,我得到两个额外的条目,一个带点,第二个带两个点。如果我设置QDir :: NoDot和QDir :: NoDotDot,则不会列出任何内容。我只需要传递给QDir的文件夹的内容,没有别的。
QFileInfo fi(model_->filePath(e));
auto file_path = fi.absoluteFilePath();
auto lyst = QDir(fi.absoluteFilePath()).entryInfoList(/*QDir::NoDotAndDotDot makes lyst empty*/);
foreach (QFileInfo info , lyst)
{
qDebug() << info.absoluteFilePath();
}
答案 0 :(得分:8)
将QDir::NoDotAndDotDot
filter或QDir::Files
或您感兴趣的任何内容传递给entryInfoList
auto lyst =
QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries);
答案 1 :(得分:2)
根据this post:
过滤器标志的默认值为
QDir::AllEntries
。当您使用QDir::setFlags
或QDir::entryList
覆盖默认标记时,您不应忘记至少包含QDir::Dirs
,QDir::Files
或QDir::Drives
中的一个来获取任何标记条目。
我想你的代码看起来像这样(还没有测试过):
QFileInfo fi(model_->filePath(e));
auto file_path = fi.absoluteFilePath();
auto lyst = QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Files);
foreach (QFileInfo info , lyst)
{
qDebug() << info.absoluteFilePath();
}