Qt5MVC模式(一)
2016-06-27 21:08
369 查看
Qt5MVC模式(一):概述上
By Xchen 20160627MVC设计模式
起源于smalltalk的一种与用户界面设计相关的设计模式。
作用:有效的分离数据和用户界面。
组成:模型model(表示数据)、视图view(表示用户界面)、控制controller(定义用户在界面上的操作)。
interView框架
Qt的MVC
区别:将视图与控制结合在一起,同时添加了代理delegate能够自定义数据条目item的显示与编辑方式。
组成:模型model(表示数据)、视图view(表示用户界面)、代理delegate(自定义数据条目item的显示与编辑方式)。
模型与视图结构:
模型与数据通信,并提供接口
视图从模型中获取数据条目索引
代理绘制数据条目
通信方式:信号&槽
工作过程:
数据改变时,模型发出信号通知视图;
用户对界面操作时,视图发出信号;
代理发出信号告知模型和视图编辑器目前的状态;
模型model(表示数据)
抽象基类QAbstractItemModel
列表的抽象基类QAbstractListModel、表格的抽象基类QAbstractTableModel
QDirModel类是文件与目录的存储模型
QStandardItemModel类
QStringListModel类
视图view(表示用户界面)
抽象基类QAbstractItemView
QListView—QListWidget\QUndoView
QTableView—QTableWidget
QTreeView—QTreeWidget
QColumnView
QHeaderView
实际上:QListWidget、QTableWidget、QTreeWidget已经包含数据,是模型与视图集成的类
代理delegate(自定义数据条目item的显示与编辑方式)
抽象基类QAbstractItemDelegate
QItemDelegate/QStyleItemDelegate
类QItemDelegate 由类QSqlRelationDelegate继承
实例一:文件目录浏览器
截图:创建过程:
1. 声明一个QDirModel对象model;
2. 分别声明三个视图对象QTreeView、QTableView、QListView;
3. 设置视图对象的模型为setModel(model);
4. 设置视图的选择模式setSelectionMode(QAbstractItemView::MultiSelection);
5. 信号槽的连接
6. 分隔窗体的设置
头文件:
#include <QApplication> #include <QAbstractItemModel> #include <QAbstractItemView> #include <QItemSelectionModel> #include <QDirModel> #include <QTreeView> #include <QListView> #include <QTableView> #include <QSplitter>
QItemSelectionModel类:用来设置模型的选择模式的。
实例二:Model例子——将数值代码转换为文字模型(实现自定义模型)
实例三:自定义View实现显示柱状统计图
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- 浅谈设计模式的学习
- Qt 5.6更新至RC版,最终版本近在咫尺
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C# 设计模式系列教程-建造者模式