博客
关于我
Qt学习笔记 QFileSystemModel 只显示名称
阅读量:227 次
发布时间:2019-03-01

本文共 1599 字,大约阅读时间需要 5 分钟。

通过修改表头,只显示一列

通过修改表头,只显示一列

Qt 提供的 QFileSystemModel 可以提供文件目录树预览功能,但是预览的都自带了Name,size,type, modified等信息。我现在只想显示 name 一列,不想显示 size, type, modified 的信息。

解决办法

方法1:修改 QFileSystemModel

写一个子类,继承自 QFileSystemModel,然后在需要显示 size, type, modified 的地方,把这些信息屏蔽掉。我知道 Qt 的 Model 显示数据,主要是在 data 这个函数中,然后 Model 的列是通过 columnCount 这个函数返回的。所以我重写 columnCount 函数,只返回一列,这一列就是我们想要的名称。

#include 
#include
#include
class MyFileSytemModel : public QFileSystemModel {public: int columnCount(const QModelIndex &parent) const { return 1; }};int main(int argc, char *argv[]) { QApplication a(argc, argv); MyFileSytemModel* model = new MyFileSytemModel; model->setRootPath(QDir::currentPath()); QTreeView* treeView = new QTreeView; treeView->setModel(model); treeView->setRootIndex(model->index(QDir::currentPath())); treeView->show(); return a.exec();}

方法2:修改 TreeView

如果我能把 TreeView 的第 2,3,4 列隐藏,也可以达到我想要的效果。QTreeView 中有个函数 setColumnHidden,可以使用这个函数来隐藏指定的列。

#include 
#include
#include
int main(int argc, char *argv[]) { QApplication a(argc, argv); QFileSystemModel* model = new QFileSystemModel; model->setRootPath(QDir::currentPath()); QTreeView* treeView = new QTreeView; treeView->setModel(model); treeView->setRootIndex(model->index(QDir::currentPath())); treeView->show(); treeView->setColumnHidden(1, true); treeView->setColumnHidden(2, true); treeView->setColumnHidden(3, true); return a.exec();}

作者:snail_hunan来源:CSDN原文:https://blog.csdn.net/snail_hunan/article/details/75250992

你可能感兴趣的文章
opencv13-基本阈值操作
查看>>
opencv14-自定义线性滤波
查看>>
opencv15-边缘处理
查看>>
opencv16-Sobel算子
查看>>
opencv17-laplance算子
查看>>
opencv18-canny检测算法
查看>>
opencv19-霍夫直线变化
查看>>
opencv2-矩阵掩膜操作
查看>>
opencv20-霍夫圆检测
查看>>
opencv21-像素重映射
查看>>
opencv22-直方图均衡化
查看>>
opencv23-直方图计算
查看>>
opencv24-直方图比较
查看>>
opencv25-直方图反向投影
查看>>
opencv26-模板匹配
查看>>
opencv27-轮廓发现
查看>>
opencv28-凸包
查看>>
opencv29-轮廓周围绘制矩形框和圆形框
查看>>
OpenCV3 install tutorial for Mac
查看>>
opencv3-Mat对象
查看>>