Qt“模型/视图”实例
InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardItemModel类、QDirModel类、QStringListModel类,以及QColumnView类、QHeaderView类、QListView类、QTableView类和QTreeView类等。
1、效果展示
2、具体代码
#include "dirmodeex.h"
#include <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; //(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();
}
注意:
(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()槽函数。
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- C++ Qt常用面试题整理(不定时更新)[通俗易懂]
- 【说站】python中Qt是什么
- qt运行cmd命令_cmd ping大包命令
- 嵌入式Qt-实现两个窗口的切换
- C/C++ Qt 数据库SqlRelationalTable关联表
- C/C++ Qt 数据库与TableView多组件联动
- C/C++ Qt 常用数据结构
- C/C++ Qt Tree与Tab组件实现分页菜单
- Qt正则代码生成器
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- 使用 Qt 连接远程 MySQL 数据库(qt连接远程mysql)
- 调试Linux下Qt的调试实践指南(linux下qt)
- 安装Linux系统,学习QT开发技术(linux安装qt教程)
- Linux下的Qt编译器之旅(qt编译器linux)
- Linux下Qt跃动编程之旅(linux下qt串口编程)
- 轻松上手,Qt在Linux安装教程,让你快速掌握技巧!(qt在linux安装)
- 掌握Qt与MySQL:操作系统中数据库的应用(qtmysql操作系统)
- 快速搭建Qt环境中的MySQL数据库(qt配置mysql数据库)
- Qt编程实现MySQL数据库调用(qt调用MySQL数据库)
- Qt Linux 计算器:一款基于 Qt 组件库的开源计算器应用程序(qtlinux计算器)
- 简单快捷:Qt MySQL 驱动程序下载指南(qtmysql驱动下载)
- Linux下Qt音频播放:轻松享受音乐乐活力(linux下qt音频播放)
- Qt实现图片移动实例(图文教程)
- Qt实现桌面雪花飘落代码