即使使用QDir :: Files过滤器,QFileSystemModel仍会将当前目录添加到列表中

时间:2017-01-25 16:47:55

标签: c++ qt file model-view qfilesystemmodel

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

0 个答案:

没有答案