QT:MVC模式-MVD的使用DEMO
简介
MVC设计模式包括三个元素:表示数据的模型(Model)、表示用户界面的视图(View)和定义了用户在界面上操作的控制器(Controller)。
与MVC架构相似,QT为了方便程序的开发,引入了模型/视图结构用于完成数据与界面的分离,也就是常用的InterView框架。与传统的MVC模式不同的是,InterView框架把视图和控制器部件结合在一起,使得框架更为简洁。为了灵活地处理用户输入,InterView引入了代理(delegate)。通过使用代理,能够自定义数据条目的显示和编辑方式。
MVD
QT的模型/视图结构分为三部分:
- 模型:与数据源通信,并为其他部件提供接口
- 视图:视图从模型中获得用来引用数据条目的模型索引
- 代理:当编辑条目时,代理和模型直接进行通信。
三者之间均通过信号和槽机制进行通信,他们的关系如下:
- 数据发生改变时,模型发出信号通知视图,视图开始渲染(rendering)
- 用户对界面进行操作,视图发出信号
- 代理发出信号告知模型和视图编辑器目前的状态
典型代码
#include "dialog.h"
#include <QApplication>
#include <QAbstractItemModel>
#include <QAbstractItemView>
#include <QItemSelectionModel>
#include <QDirModel>
#include <QTreeView>
#include <QTableView>
#include <QListView>
#include <QSplitter>int main(int argc, char *argv[])
{QApplication a(argc, argv);//MVD使用示例QDirModel model;//文件目录modelQTreeView tree;QTableView table;QListView list;tree.setModel(&model);table.setModel(&model);list.setModel(&model);//设置模型tree.setSelectionMode(QAbstractItemView::MultiSelection);table.setSelectionModel(tree.selectionModel());//使用与tree对象相同的选择模型list.setSelectionModel(tree.selectionModel());QObject::connect(&tree,SIGNAL(doubleClicked(QModelIndex)),&list,SLOT(setRootIndex(QModelIndex)));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("DirModel");splitter->show();return a.exec();
}
QT:MVC模式-MVD的使用DEMO相关推荐
- 实现MVC模式的Web应用程序
实验结果 1.添加Thymeleaf依赖 <dependency><groupId>org.springframework.boot</groupId><ar ...
- ExtJS学习:MVC模式案例(三)
在ExtJS案例系列教程的前两讲,我们了解了该案例的最终实现效果,并且在ExtJS学习:MVC模式案例(二)中我们添加Viewport.js和demoController.js两个文件,实现了对整个网 ...
- [ASP.NET MVC 小牛之路]01 - 理解MVC模式
特别提醒:本文编写时间是 2013 年,请根据目前 .NET 发展接收你所需的知识点. PS:MVC出来很久了,工作上一直没机会用.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得 ...
- JSP的MVC模式(JavaBean、Servlet、JSP)
JSP的MVC模式中,Model=JavaBean,View=JSP,Controller=Servlet. 简而言之:JavaBean用于存储数据,JSP用于显示页面,Servlet用于处理数据(脏 ...
- Android Mvc 模式
1.Mvc 介绍 Model-View-Controller(模型-视图-控制器) 模式,这种模式用于应用程序的分层开发. model:模型层主要是处理数据的,主要进行网络请求,复杂的数据操作 ...
- Laya Air游戏开发模式之MVC模式(核心篇)
上次结尾有说到Laya引擎在3D方面是借助Unity3d引擎的编辑器做好通过插件导出数据来做这没什么可挑剔(Unity引擎牛逼),但在2d编辑器(自身的)方面却存在很多bug(作者深有体会),所以这篇 ...
- HTML5开发中使用MVC模式
公司上周举办了一次编程马拉松,时间为两天,我当然用了lufylegend.js,为了让代码看起来更整洁一些,尝试着用javascript写了一个小的MVC框架,并开发了一个简单的demo,由于时间太短 ...
- Qt Model/View(MVD)模型分析
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道M ...
- 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表
提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...
最新文章
- VC嵌入断点中断INT3
- 生成多个互不重叠的不同半径圆
- python docker自动化_自动化 – 自动创建docker容器并启动python脚本
- Java扑克牌(洗牌Collections.shuffle)
- 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...
- vba mysql update多字段_vba操作Mysql使用UPDATE一次更新多组数据
- 史上最全java架构师技能图谱(下)
- Php jsondb,JsonDB-PHP
- linux文件测试操作
- Java中的I/O流全汇总,所有的I/O就一张图
- Django REST framework+Vue 打造生鲜超市(九)
- jmeter定时器的使用_Jmeter的九种定时器解析
- Verilog 7人投票表决器
- 2022年瑞典经济发展研究报告
- 一图读懂IP数据包头结构
- SQL Server 2008 R2 企业版/开发版/标准版
- 模拟算法考试训练题和答案1
- Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数
- 计算机开机扫描磁盘,电脑开机扫描磁盘的方法
- 白杨SEO:SEO转型难吗?SEO如何转型ASO(应用商店搜索优化)?