QListView,QTreeView和 QStandardItemModel的简单使用
2011-04-14 10:17
363 查看
//model有以下几种: // QStringListModel 存储一组字符串 // QStandardItemModel 存储任意层次结构的数据 // QDirModel 对文件系统进行封装 // QSqlQueryModel 对SQL的查询结果集进行封装 // QSqlTableModel 对SQL中的table进行封装 // QSqlRelationalTableModel 对带有foreign key的SQL table进行封装 // QSortFilterProxyModel 对另一个model执行sort and/or filter // model中存放的每项数据都有相应的"model index",由QModelIndex类来表示。 // 每个index由三个部分构成:row,column和表明所属model的指针。对于一维的list model,column部分永远为0。 //下面是两个例子(此实例可适当改动),介绍了QStringListModel,QStandardItemModel,QDirModel用QTreeView和QListView来显示的例子 //建一个cpp文件 拷贝以下代码即可 #include <QApplication> #include <QWidget> #include<QTreeView> #include<QDirModel> #include<QHBoxLayout> #include<QSplitter> #include<QStringListModel> #include<QListView> #include<QStandardItemModel> int main(int argc, char *argv[]) { /* QApplication app(argc, argv); //以下是QStandardItemModel的简单使用,只需替换view的model为qstmodel就可以看到效果 QStandardItemModel *qstmodel=new QStandardItemModel(); QStandardItem* item1 = new QStandardItem("item1"); QStandardItem* item2 = new QStandardItem("item2"); QStandardItem* item3 = new QStandardItem("item3"); item1->appendRow(item2); qstmodel->appendRow(item1); qstmodel->appendRow(item3); //以下是StringListModel的示例,只需替换view的model为mod就可以看到效果,QListView也适用 QStringList names; names<<"a"<<"b"; QAbstractItemModel *mod=new QStringListModel(names); //要注意的是,这里把StringListModel作为一个QAbstractItemModel来使用。这样我们就可以 //使用model中的抽象接口,而且如果将来我们用别的model代替了当前这个model,这些代码也会照样工作。 //QListView提供的列表视图足以满足当前这个model的需要了。 QDirModel *model=new QDirModel; QTreeView *view=new QTreeView; //这里设置Model即可 view->setModel(model); view->setSelectionMode(QAbstractItemView::SingleSelection); view->setAutoFillBackground(true); //设置列是否隐藏 // view->setColumnHidden(1,true); // view->setColumnHidden(2,true); // view->setColumnHidden(3,true); // widget->setAutoFillBackground(true); QHBoxLayout *blayout=new QHBoxLayout; blayout->addWidget(view); blayout->addStretch(); QSplitter *splitter = new QSplitter; splitter->setLayout(blayout); //splitter->addWidget(view); splitter->show(); // widget->show(); return app.exec(); */ QApplication app(argc, argv); QSplitter *splitter = new QSplitter; //从缺省目录创建数据 QDirModel *model = new QDirModel; QTreeView *tree = new QTreeView(splitter); //配置一个view去显示model中的数据,只需要简单地调用 setModel(),并把目录model作为参数传递 tree->setModel(model); //setRootIndex()告诉views显示哪个目录的信息,这需要提供一个model index,然后用这个 //model index去model中去获取数据,这里默认的是当前路径 tree->setRootIndex(model->index(QDir::currentPath())); QListView *list = new QListView(splitter); list->setModel(model); //index()这个函数是QDirModel特有的,通过把一个目录做为参数,得到了需要的model index //其他的代码只是窗口show出来,进入程序的事件循环就好了 list->setRootIndex(model->index(QDir::currentPath())); splitter->setWindowTitle("Two views onto the same directory model"); splitter->show(); return app.exec(); |
相关文章推荐
- QListView,QTreeView和 QStandardItemModel的简单使用
- QStandardItemModel在QTreeView中的使用
- QListView 和 QStandardItemModel的使用
- Qt:在TreeModel+QTreeView中使用复选框(checkbox)
- Qt:在TreeModel+QTreeView中使用复选框问题
- SSIS教程:创建简单的ETL包 -- 6. 对项目部署模型使用参数(Using Parameters with the Project Deployment Model)
- C# System.ComponentModel.Composition中的Export和Import特性标签的简单使用。
- QStandardItemModel简单好用,QTableView带进度条
- Qt:TreeModel+QTreeView中使用图标
- QTableView与QStandardItemModel基本使用方法
- QTableView与QStandardItemModel基本使用方法
- 2-1. Creating a Simple Model 使用图形界面设计器创建一个简单的模型
- IOS开发中model的简单使用
- Qt编程26:QStringListModel与QListView结合使用
- iOS Mantle解析框架简单的使用入门(字典映射model)
- 使用QStandardItemModel的QTableView,添加大量数据解决刷新卡顿问题
- 使用qstandarditemmodel获取qtableview中复选框的数据
- Prism 框架中使用IEventAggregator事件聚合器简单实现ViewModel之间的通讯
- Qt:Model/View架构的简单使用
- Qt中使用QDirModel / QFileSystemModel + QTreeView显示Checkbox复选框