Qt的MVC模型/视图编程(一)——理论知识

3 篇文章 1 订阅
订阅专栏

一、为什么需要MVC模型/视图

MVC模型/视图架构是用于实现对大量数据的存储,处理及其显示。如下图所示:

没用MVC存储数据的是图片中的上半部分,用了MVC处理数据后的是图片的下半部分;

1:MVC模型/视图的作用

a、模型(数据)与视图(显示)相分离 ;

b、模型对外提供标准接口存取数据(不关心数据如何显示);

c、视图自定义数据的显示方式(不关心数据如何组织存储);

2:模型/视图的优点

a、视图模型分离, 提高代码重用性;

b、提高开发效率;

c、便于后期维护, 降低维护成本;

3:模型/视图的缺点

a、增加了系统结构和实现的复杂性。

b、视图与控制器间的过于紧密的连接。

二、MVC模型/视图的组成部分

        MVC(Model-View-Controller)是一种起源于Smalltalk的设计模式,经常用于建用户界面。MVC包含了3个组件:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式;

        将视图和控制两种组件结合起来,就形成了“模型/视图”架构。模型视图模式的直观理解如下图所示:

三、模型类

1、模型定义

        在模型/视图架构中,模型提供了一个标准的接口供视图和委托访问数据。 Qt中的模型类层次结构如下图所示:

2、模型中的索引

a、模型中的数据使用唯一的索引来访问 ;

b、模型索引是数据与视图分离的重要机制 ;

c、QModelIndex是Qt中的模型索引类型:包含具体数据的访问途径,包含一个指向模型的指针; d、模型索引通过行、列和父项(row、column和parent)访问数据 ;

e、模型索引的意义如下图所示:

3、模型中的数据角色

a、模型中的数据在视图中的用途(显示方式)可能不同 ;

b、模型必须为数据设置特定数据角色(数据属性);

c、数据角色用于提示视图数据的作用 ;

d、数据角色是不同视图以统一风格显示数据的标准;

四、视图类

        在MVC模型/视图体系结构中,视图从模型中获取数据项并呈现给用户。内容和表示的分离是通过使用QAbstractItemModel提供的标准模型接口,QAbstractItemView提供的标准视图接口,以及使用了模型索引提供了一种通用的方法来表示数据。 Qt中视图类的层次结构如下图所示:

 五、数据-窗口映射器

        数据-窗口映射器QDataWidgetMapper类是为数据模型和窗口部件提供了一个映射;这样就可以实现在窗口部件上显示和编辑一个模型中的一行数据。

        在实际项目中,经常用数据-窗口映射器QDataWidgetMapper类配合MVC模型/视图使用;

Qt 项目架构:MVC架构
QtCompany的博客
07-06 460
C++ 代码为例,设计英雄(Hero)对战 demo。主要三个类,分别为 Hero(英雄数据类),HeroView(英雄UI类,如血条)和 HeroController(英雄控制器类,Hero 管理类)。MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
QT MVC 模式
wang19870102的专栏
09-16 2355
QT提供Model-Based的4个控件,分别是List View,Tree View,
Qt5实现的一个mvc的例子
12-07
libgitlmvc 是一个基于Qt构建的的C++ MVC 框架 概览: ViewFront ControllerCommandsModel 该框架包括四个部分: 视图: 用户交互界面 前端控制其(Front Controller): 处理所有的视图请求 命令: 前端控制其根据不同的视图请求,调用不同的命令,实现某个特定的功能 模型: 表示程序当前的状态。 已经调试运行了
qt MVC软件设计模式
最新发布
u013083044的博客
04-02 694
Qt中使用MVC(Model-View-Controller)软件设计模式可以帮助你将数据模型、用户界面和控制逻辑有效地分离,从而使得代码更清晰,更易于维护和扩展。通过合理地使用MVC软件设计模式,你可以更好地组织和管理Qt应用程序的代码,使得应用程序更具灵活性和可维护性。类负责处理用户输入和更新数据。通过合理地使用MVC模式,使得任务列表应用程序的各个部分相互独立,易于扩展和维护。类负责显示任务列表界面,类代表任务数据模型
QT MVC模型
specialsun的专栏
05-27 320
    QT视图类主要有三种: QListView,QTreeView,QTableView,对应的基础Model为 QAbstractItemModel(QStandardItemModelo为QAbstractItemModel实现), 对于QListView和QTableView则分别提供了QStringListModel,QAbstractTableModel实现.     一直不...
模型/视图编程
m0_46376834的博客
08-16 280
模型/视图编程模型/视图编程模型视图委托 模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式。委托(Delegate)用于定制数据的渲染和编辑方式。 模型 所有的模型都基于QAbstractItemModel类,该类提供了十分灵活的接口来处理各种视图,这些视图可以
Qt中的MVC模型/视图结构)
qq_38446366的博客
10-15 1922
转自: https://blog.csdn.net/rl529014/article/details/52072380 MVC全称是 Model View Controller,是一种非常非常流行的架构模式,相关MVC具体的,网上已经非常非常详尽了,不赘述了。   关于Qt中的MVC 其实Qt中的MVC并不叫MVC,而是叫“MVD”,Qt中没有Controller的说法,而是使用了另外一...
Qt模型/视图(实时更新数据)
01-09
Qt实现的MVC编程 功能: (1)添加委托(进度条) (2)显示文件名称、大小、进度、速度、剩余时间、状态等。 (3)可进行添加、更新、删除、清空等操作。 (4)实时更新数据
qt MVC(一)
萧海的博客
09-19 1881
mvc是经典的三层结构,将数据,视图和逻辑分离。Qt中的Model/View框架,实现了这个模式。在Qt中这个模式设计到三个类,model类,view类和delegate类。model类保存数据,view负责显示,而delegate负责协调model和view之间的数据edit(编辑)和render(渲染)。 模型视图结构: 模型与数据通信,并提供接口 视图模型中获取数据条目索引 代理绘制数据条目 通信方式:信号&槽 工作过程: 数据改变时,模型发出信号通知视图; 用户对界面操作时,视图发出信
Qt - 模型/视图编程(MVC编程)
weifc-wei 的博客
08-12 382
模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式。委托(Delegate)用于定制数据的渲染和编辑方式。 1.模型 所有的模型都基于QAbstractItemModel类,该类提供了十分灵活的接口来处理各种视图,这些视图可以将数据的表现形式为表格(table)、
基于QtC++架构实例(模型MVCC++后端管理系统应用)
09-07
本资源是一个完整的Qt5.9Creator工程代码,主要功能是总结一个Qt下的MVC架构。该架构主要分为控制层、UI界面层、模型层,具体的理论讲解,可以参考博主这篇博客: https://blog.csdn.net/naibozhuan3744/article/details/82493728
Qtmvc模式——QHeadView详解已经应用
05-07
QHeaderView类为项目视图提供标题行或标题列。 QHeaderView显示项目视图(如QTableView和QTreeView类)中使用的标题。它取代了Qt3的QHeader类,QHeader类以前用于相同的目的,但是为了与item视图类保持一致,它使用了Qt模型/视图体系结构。 QHeaderView类是模型/视图类之一,是Qt模型/视图框架的一部分。 header使用qAbstracteModel::headerData()函数从模型中获取每个节的数据。可以使用qAbstracteModel::setHeaderData()设置数据。所以我们必须要重写qAbstracteModel
QtMVC使用
梦之旅的专栏
07-08 1183
1、QTableView#if 0 QStandardItemModel *model = new QStandardItemModel; model->setColumnCount(5); model->setRowCount(3); #else QStandardItemModel *model = new QStandardItemModel(3, 5); /
QtMVC模式分析与使用
心向阳光,斗志昂扬!
04-03 1614
QtMVC模式实际上是MVD,如下图所示: QListView,QTreeView,QTableView都用到了MVD模式,Model和View都交由Delegate集中处理。与QListWidget,QTreeWidget,QTableWidget相比,View控件类可以处理大批量数据,不会出现延迟卡顿现象。 ...
Qt: MVC结构
liunanya的博客
04-22 338
目的 主要是为了让自己能够更容易了解MVC框架,更能够去了解QAbstractItemView(QlistView, QTableView, QTreeView), QAbstractItemModel(QAbstractListModel, QAbstractProxyModel, QAbstractTableModel, QStandardItemModel), QAbstractItemDelegate(QItemDelegate, QStyledItemDelegate)之间联系,更能方便的去写合适
QT MVC模型(二)
specialsun的专栏
10-23 189
       接QT MVC模型,通过实现QAbstractTableModel产生的表格,发现无法在编辑时选中原数据,而QTableWidget可以选中后编辑:       编辑时不可选中:                                              编辑时可选中:                                             ...
Qt视图模型框架初识(MVC)
如风逝去
06-30 1005
声明:本文章只是为了自己学习写的笔记,如需了解具体代码示例或者详细内容请参考<<QtCreator快速入门>>第十六章 一.首先来了解一下MVC(Model-View-Controller模型-视图-控制)设计模式 MVC是一种起源于Smalltalk的设计模式,经常用于创建用户界面,模型(Model)是应用对象用于表示数据;视图是(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式,在MVC之前都是将这三种组件集成在一起,M
qt 模型/视图实时
08-09
Qt模型/视图是一种用于显示和处理大量数据的架构。它可以实时更新数据的变化,并将其反映在用户界面上。 Qt模型/视图架构中,模型负责存储和管理数据,而视图则负责显示数据。模型可以是标准的模型类,也可以是自定义的模型类。视图则可以是各种不同的界面元素,比如表格、列表、树形结构等。 Qt模型/视图架构使用信号和槽机制来实现实时更新。当模型中的数据发生变化时,模型会发出相应的信号,视图则会接收到这些信号,并根据信号进行相应的更新。这使得用户界面可以实时地反映数据的变化。 除了实时更新数据外,Qt模型/视图还具有其他一些功能。比如,它支持对数据的排序、筛选和搜索功能,可以根据用户的需求来显示和操作数据。此外,模型/视图还支持编辑和选择功能,用户可以通过界面进行数据的编辑和选择操作。 总结起来,Qt模型/视图实现了对大量数据的实时显示和处理。它通过信号和槽机制来实现数据的实时更新,并支持排序、筛选、编辑和选择等功能。通过使用模型/视图开发者可以方便地管理和展示数据,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • QT的QToolButton样式 13875
  • QString::arg: Argument missing的解决办法 6127
  • 嵌入式Linux系统驱动hp1020打印机 5577
  • Qt的QTabWidget使用qss美化 4606
  • 我的第一个上位机软件 4211

分类专栏

  • 读书笔记 8篇
  • 技术杂记 16篇
  • Qt的MVC模型/视图编程 3篇
  • Qt自定义控件 1篇
  • stm32 1篇
  • 设计模式 1篇
  • C++深度解析教程学习笔记 12篇

最新评论

  • VS2015+Qt5.9.2 调试遇到无法找到入口 无法定位程序输入点的解决办法

    不胖的胖丁: 有用,直接解决表情包

  • C/C++程序利用extern从外部导入结构体变量的技巧

    划清界限: 也需要吧

  • C/C++程序利用extern从外部导入结构体变量的技巧

    啊?这么巧的吗?: 你好,这样引用结构体就不需要包含头文件了是吗?

  • 嵌入式Linux系统驱动hp1020打印机

    颜金鹏: 六个记录,多谢楼主

  • QT的QToolButton样式

    man函数: checked 这个选中后为什么没反应

最新文章

  • 程序员的修养
  • QLabel的QToolTip显示不全的解决办法
  • Qt的MVC模型/视图编程(三)——标准模型在实际工程的应用
2022年17篇
2021年4篇
2020年6篇
2019年15篇
2018年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

划清界限

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司丽江网站优化推荐广元seo网站推广报价榆林至尊标王推荐海西seo网站优化价格黄山关键词按天计费报价拉萨百搜标王多少钱襄阳网络营销多少钱威海网站推广公司海南网站建设设计哪家好荷坳网站优化按天收费报价大鹏外贸网站制作公司运城网站优化排名报价襄阳SEO按天扣费价格信阳建设网站推荐霍邱网站建设设计报价黄石网站排名优化公司深圳百姓网标王推广报价承德百度爱采购报价济宁网站优化报价宜昌百度标王布吉网站开发新乡高端网站设计报价伊春关键词按天扣费平顶山阿里店铺运营多少钱吉安企业网站改版哪家好迪庆网页制作通化营销网站报价喀什关键词排名价格淮北网站搜索优化上饶网站设计价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化