2011-12-06 57 views
2

我得到兩個額外的條目,一個點和第二個兩點。如果我設置QDir :: NoDot和QDir :: NoDotDot,則不會列出任何內容。我只需要我傳遞給QDir的文件夾的內容,沒有別的。我不需要點和dotdot當我通過QDir :: entryInfoList列出條目時,我不需要點和點

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

嘛'.'和'..'條目也是文件夾的一部分。 – Cyclonecode

+0

向我們展示您正在設置NoDot和NoDotDot的行。 –

+0

@KristerAndersson是的,但我不需要它們 – smallB

回答

8

QDir::NoDotAndDotDotfilter或運算與QDir::Files或者你感興趣的任何東西entryInfoList

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

如果我這樣做,我的lyst變量中沒有列出任何東西。 – smallB

+0

好的,這件作品非常感謝很多人。 – smallB

2

根據this post

用於過濾器標誌的默認值是QDir::AllEntries。當您用QDir::setFlagsQDir::entryList覆蓋默認標誌時,您不應該忘記包含至少一個QDir::Dirs,QDir::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(); 
}