Ik heb geen punt en dotdot nodig

wanneer ik inzendingen opneem via QDir :: entryInfoList krijg ik twee extra ingangen, een met punt en een tweede met twee punten. Als ik QDir :: NoDot en QDir :: NoDotDot instel, wordt er niets weergegeven. Ik heb alleen de inhoud nodig van de map die ik aan QDir geef, verder niets.

 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
@KristerAndersson ja, maar ik heb ze niet nodig
toegevoegd de auteur smallB, de bron
@Rob Wanneer ik dit doe, is lyst leeg.
toegevoegd de auteur smallB, de bron
Laat ons de regel zien waarop u NoDot en NoDotDot instelt.
toegevoegd de auteur Robᵩ, de bron
De codes . en .. maken ook deel uit van de map.
toegevoegd de auteur Cyclonecode, de bron

2 antwoord

Pass QDir::NoDotAndDotDot filter ORed with QDir::Files or anything of your interest to entryInfoList

auto lyst =
 QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries);
8
toegevoegd
als ik dat doe, staat er niets in mijn variabele lyst.
toegevoegd de auteur smallB, de bron
ok, dit werkt heel erg bedankt.
toegevoegd de auteur smallB, de bron

Volgens deze post :

De standaardwaarde voor de filtervlaggen is QDir :: AllEntries . Wanneer u de standaardvlaggen overschrijft met QDir :: setFlags of QDir :: entryList , moet u niet vergeten om ten minste één van QDir :: Dirs , QDir :: Files of QDir :: Drives om items te krijgen.

Ik stel me voor dat je code er zo zou uitzien (heb het niet getest):

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();
}
2
toegevoegd