您的位置:首页 > 编程语言 > Qt开发

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

2014-12-28 22:50 387 查看
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();
}


程序运行结果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: