我正在构建有点像标准文件资源管理器 - 左侧窗格用于文件夹树,右侧窗格用于显示所选文件夹中的文件。
带有 QFileSystemModel 的 QTreeView 用于显示文件夹。模型的过滤器设置为QDir::Dirs | QDir::NoDotAndDotDot
仅列出目录,不列出文件。我想仅针对具有子文件夹的文件夹显示扩展标记,即如果某些目录为空或仅包含文件,则它不应该是可扩展的。但相反,树视图会针对空目录保留扩展标记。这就是问题:如何隐藏它们?
我在这里,在谷歌,在 QT 示例中搜索了解决方案 - 没有成功。虽然我认为这个问题很容易回答。我目前唯一的解决方案是继承 QAbstractItemModel。那是痛苦。
QT 4.8,QT 创建者,C++。
这是演示的代码:
#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeView w;
QFileSystemModel m;
m.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
m.setRootPath("C:\\");
w.setModel(&m);
w.setRootIndex(m.index(m.rootPath()));
w.hideColumn(3);
w.hideColumn(2);
w.hideColumn(1);
w.show();
return a.exec();
}