QFileSystemModel只显示名称,不显示size,type,modified
2017-07-17 16:13
1086 查看
Qt 提供的 QFileSystemModel可以提供文件目录树预览功能,但是预览的都自带了Name,size,type, modified等信息。我现在只想显示name这一列,不想显示size,type,modified的信息。
最后,来个截图。
解决办法
办法1:修改QFileSystemModel
写一个子类,继承自QFileSystemModel,然后在需要显示size,type,modified的地方,把这些信息屏蔽掉。我知道Qt的Model显示数据,主要是在data这个函数中,然后Model的列是通过columnCount这个函数返回的。所以我重写columnCount函数,只返回一列,这一列就是我们想要的名称。#include <QtGui/QApplication> #include <QFileSystemModel> #include <QTreeView> class MyFileSytemModel : public QFileSystemModel { public: //第1列显示名称,其他几列都屏蔽掉 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 <QtGui/QApplication> #include <QFileSystemModel> #include <QTreeView> 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(); }
相关文章推荐
- Qt中使用QDirModel / QFileSystemModel + QTreeView显示Checkbox复选框
- 【Qt笔记】QFileSystemModel
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- Android: Service中创建窗口显示(TYPE_SYSTEM_ALERT, TYPE_SYSTEM_OVERLAY)
- Exception: Could Not Load Type ‘System.ServiceModel.Activation.HttpModule’
- qt 之 QFileSystemModel
- IIS8排错:Could not load type ‘System.ServiceModel.Activation.HttpModule’
- [小米对话框]WindowManager.LayoutParams.TYPE_SYSTEM_ALERT对话框不显示?
- Solve IIS 8 Error: Could not load type ‘System.ServiceModel.Activation.HttpModule’
- QT: QFileSystemModel _q_fileSystemChanged slot is executed on the UI thread which contradicts docume
- 微软企业库中数据库访问代码问题(System.InvalidOperationException: Parameter '@FileContent' exceeds the size limit for the sql_variant datatype.)
- The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[BMS.DataAccess.Models.ServiceTyp
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- 用QFileSystemModel和Listview做的简易图片浏览
- 解决:Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceMode
- QtCreator 模块/视图编程( 一) 模型类,自定义模型QStringListModel,QStandardItemModel,QFileSystemModel,QSqlQueryModel,
- 解决:Could not load type 'System.ServiceModel.Activation.HttpModule' from assemb
- QFileSystemModel的简单用法
- Not an managed type: class managementsystem.platform.security.model.Users
- Could not load type System.ServiceModel.Activation.HttpModule解决办法