InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardItemModel类、QDirModel类、QStringListModel类,以及QColumnView类、QHeaderView类、QListView类、QTableView类和QTreeView类等。
#include "dirmodeex.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDirModel model; //(a)
/*新建三种不同的View对象,以便文件目录可以以三种不同的方式显示*/
QTreeView tree;
QListView list;
QTableView table;
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)));
QSplitter *splitter = new QSplitter;
splitter->addWidget(&tree);
splitter->addWidget(&list);
splitter->addWidget(&table);
splitter->setWindowTitle(QObject::tr("Model/View"));
splitter->show();
return a.exec();
}
注意:
QT开发交流+赀料君羊:714620761
(a):QDirModel model;新建一个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()槽函数。
页面更新:2024-06-16
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号