QFileSystemModel продолжает добавлять текущий каталог в список даже с фильтром QDir::Files

Я использую Qt5. Код действительно прост и выглядит следующим образом:

struct DirEdit {
    QLineEdit *lineedit;
    QToolButton *button;
    QListView *view;
    QString dirPath;
    QFileSystemModel dirModel;
    bool ready {false};
};

Затем в исходном файле:

for (std::size_t i = 0; i != c_lanes; ++i) {
    dirEdits[i].view->setModel(&dirEdits[i].dirModel);
    dirEdits[i].dirModel.setFilter(QDir::Files);
    dirEdits[i].dirModel.setProperty(fIdProp, (uint)i);
}

и, наконец, когда пользователь выбирает путь для отображения содержимого в QListView:

DirEdit& de = dirEdits[folderId];
de.dirPath = selectedDirPath;
de.lineedit->setText(selectedDirPath);
de.dirModel.setRootPath(selectedDirPath);
de.view->setRootIndex(de.dirModel.setRootPath(selectedDirPath));

Теперь, когда я выбираю /home/srsly (домашняя папка в системе Fedora 25 Linux), текущая папка, из которой запускается программа, добавляется в начало списка. Как видите, фильтры настроены на исключение каталогов. В чем может быть причина такого странного поведения?


person iksemyonov    schedule 25.01.2017    source источник
comment
Не знаю, почему в Fedora фильтр применяется именно так. Я бы рассмотрел фильтр по умолчанию: QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs по сравнению с вашим, который переопределяет все эти флаги ИЛИ. Что, если вы попытаетесь фильтровать с помощью QDir::NoDotAndDotDot | QDir::Файлы?   -  person Alexander V    schedule 25.01.2017
comment
Да, пробовал вышеописанную комбинацию, результат тот же. Что действительно любопытно, так это то, как папка меняется в зависимости от рабочего каталога. Однако это происходит только в домашнем каталоге. Когда рабочий каталог находится за пределами ~, эффект исчезает.   -  person iksemyonov    schedule 25.01.2017
comment
Возможно, вам поможет дополнительная фильтрация каталогов маршрутизации: stackoverflow.com/questions/250890/   -  person Alexander V    schedule 25.01.2017