Qt模型视图实例
InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardItemModel类、QDirModel类、QStringListModel类,以及QColumnView类、QHeaderView类、QListView类、QTableView类和QTreeView类等。1、效果展示
2、具体代码includedirmodeex。hincludeQApplicationincludeQAbstractItemModelincludeQAbstractItemViewincludeQItemSelectionModelincludeQDirModelincludeQTreeViewincludeQListViewincludeQTableViewincludeQSplitterintmain(intargc,charargv〔〕){QApplicationa(argc,argv);QDirModelmodel;(a)新建三种不同的View对象,以便文件目录可以以三种不同的方式显示QTreeViewtree;QListViewlist;QTableViewtable;tree。setModel(model);(b)list。setModel(model);table。setModel(model);tree。setSelectionMode(QAbstractItemView::MultiSelection);(c)list。setSelectionModel(tree。selectionModel());(d)table。setSelectionModel(tree。selectionModel());(e)QObject::connect(tree,SIGNAL(doubleClicked(QModelIndex)),list,SLOT(setRootIndex(QModelIndex)));(f)QObject::connect(tree,SIGNAL(doubleClicked(QModelIndex)),table,SLOT(setRootIndex(QModelIndex)));QSplittersplitternewQSplitter;splitteraddWidget(tree);splitteraddWidget(list);splitteraddWidget(table);splittersetWindowTitle(QObject::tr(ModelView));splittershow();returna。exec();}
注意:
QT开发交流赀料君羊:714620761
(a):QDirModelmodel;新建一个QDirModel对象,为数据访问做准备。QDirModel的创建还可以设置过滤器,即只有符合条件的文件或目录才可被访问。
(b):tree。setModel(model);调用setModel()函数设置View对象的Model为QDirModel对象的model。
:tree。setSelectionMode(QAbstractItemView::MultiSelection);设置QTreeView对象的选择方式为多选。
QAbstractItemView提供五种选择模式,即QAbstractItemView::SingleSelection、QAbstractItemView::NoSelection、QAbstractItemView::ContiguousSelection、QAbstractItemView::ExtendedSelection和QAbstractItemView::MultiSelection。
(d):list。setSelectionModel(tree。selectionModel());设置QListView对象与QTreeView对象使用相同的模型
(e):table。setSelectionModel(tree。selectionModel());设置QTableView对象与QTreeView对象使用相同的模型
(f):为了实现双击QTreeView对象中的某个目录时,QListView对象和QTableView对象中显示此选定目录下的所有文件和目录,需要连接QTreeView对象的doubleClicked()信号与QListView对象和QTableView对象的setRootIndex()槽函数。