我正在使用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系统上)时,运行程序的当前文件夹会附加到列表的开头。如您所见,过滤器设置为排除目录。这种奇怪行为的原因是什么?