Qt学习之路之模型/视图类

InterView 框架提供了可直接使用的模型类和视图类~~~~

实现一个简单的文件目录浏览器。附上如下代码

main.cpp

#include <QtWidgets/QApplication>
#include <QAbstractItemModel>
#include <QAbstractItemView>
#include <QItemSelectionModel>
#include <QDirModel>
#include <QTreeView>
#include <QListView>
#include <QTableView>
#include <QSplitter>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);

	//--为访问数据做准备 , 这里还可以设置过滤器,访问符合条件的文件或者目录
	QDirModel model;		

	//--新建对象
	QTreeView tree;			
	QListView list;				
	QTableView table;		

	//--调用函数setModel() 设置 view对象的model为QDirModel对象的model
	tree.setModel(&model);
	list.setModel(&model);
	table.setModel(&model);

	//----QTree对象设置为多选
	tree.setSelectionMode(QAbstractItemView :: MultiSelection);

	//---QList对象设置与QTree对象使用相同的选择模型
	list.setSelectionModel(tree.selectionModel());
	//----QTable对象设置与QTree对象使用相同的选择模型
	table.setSelectionModel(tree.selectionModel());

	//----	实现双击QTreeView对象中的某个目录时,
	//----QListView与QTableView对象显示此选定目录下的所有文件与内容
	//----把QTreeView的信号 doubleClicked() 同 QListView与QTableView对象的槽setRootIndex()相连
	/*--------------- 这里设置的信号是双击根目录 ---------------------*/
	QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)), 
				&list, SLOT(setRootIndex(QModelIndex)) );
	QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)), 
				&table, SLOT(setRootIndex(QModelIndex)) );


	//---实现窗口的分割
	QSplitter *spliter = new QSplitter;
	spliter->addWidget(&tree);
	spliter->addWidget(&list);
	spliter->addWidget(&table);
	spliter->setWindowTitle("Model/View");
	spliter->show();
	
	return a.exec();
}

程序运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值