我已经在
的帮助下实现了自定义文件浏览对话框QListView
QTreeView
QFileSystemModel
我想要什么!
仅用于浏览 xml 文件的浏览对话框。所以我只想在 QListView 中显示 dirs 和 xml 文件
如果一个目录有 xml 文件,那么 xml 文件将列在该目录下
否则就将目录显示为空(不管它有多少,除了 xml)
在大多数情况下,您正在浏览特定类型的文件。与 MSWord 一样(仅显示 .doc 和 .docx 以供浏览)
我做了什么
m_ptrModelForTree = new QFileSystemModel(this);
m_ptrModelForTree->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
m_ptrModelForTree->setRootPath("");
ui->treeView->setModel(m_ptrModelForTree);
ui->treeView->hideColumn(1);
ui->treeView->hideColumn(2);
ui->treeView->hideColumn(3);
ui->treeView->header()->hide();
m_ptrModelForList = new QFileSystemModel(this);
m_ptrModelForList->setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
m_ptrModelForList->setRootPath("");
ui->listView->setModel(m_ptrModelForList);
ui->listView->setRootIndex(m_ptrModelForList->index("c:\\"));
我得到了什么
显示所有目录和所有文件的对话框(但我只需要显示 xml 文件)
我尝试了什么
m_ptrModelForList->setNameFilters(QStringList()<<".xml");
但它只显示 xml 文件,不显示目录。
请给我建议该怎么做。
最佳答案
实际上这是@Andreas 在对问题的评论中提出的解决方案。 我的贡献是指出名称过滤器中的另一个错误。
解决方案:如何显示所有按扩展名过滤的目录+文件
关于c++ - 在 Qt 的 QFileSystemModel 中仅过滤目录和 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927069/