我不需要dot和dotdot

时间:2011-12-06 17:52:23

标签: c++ qt

当我通过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();
        }

2 个答案:

答案 0 :(得分:8)

QDir::NoDotAndDotDot filterQDir::Files或您感兴趣的任何内容传递给entryInfoList

auto lyst =
 QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries);

答案 1 :(得分:2)

根据this post

  

过滤器标志的默认值为QDir::AllEntries。当您使用QDir::setFlagsQDir::entryList覆盖默认标记时,您不应忘记至少包含QDir::DirsQDir::FilesQDir::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();
}