Я использую 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), текущая папка, из которой запускается программа, добавляется в начало списка. Как видите, фильтры настроены на исключение каталогов. В чем может быть причина такого странного поведения?