模型/视图(基础知识)

开篇但不点题

MFC中就有文档/视图模式,这种模式好像叫什么观察者模式之类的似乎,就是数据和显示分离,好多个 view 观察着 data 之类的。可以通过 view(可能有多个)来修改 data,当 data 改变了之后要通知所有的 view 修改自己的显示!(好像核心就是这个:))

Model View Controller

MVC包含三个组件:

  • Model -> 应用对象,表示数据
  • View -> 用户界面,显示数据
  • Controller -> 定义了界面与用户的交互方式

  • 模型与数据进行通信,为架构中的其他组件提供了接口
  • 视图从模型中获得模型索引(Model Index)
  • 模型索引用来显示数据
  • 当编辑项目时,代理使用模型索引直接与模型进行通信
  • 将视图和控制组件结合起来就形成了模型/视图架构
  • 为了用户输入能进行灵活处理,还引入了委托(Delegate,代理)
  • Delegate的引入后,就可以定制数据的渲染和编辑方式

模型、 视图、 代理

其中每一个组件都使用了抽象基类来定义,三者之间通过信号和槽来实现通信

  • -> 当数据源数据发生改变时,模型发出信号告知视图。
  • -> 当用户与显示的项目交互时,视图发出信号提供交互信息
  • -> 当编辑时,代理发出信号,告知模型、视图编辑器的状态。

模型

  • 所有的模型都基于QAbstractItemModel类,这个牛x类定义了一个接口,可以提供视图、委托来访问数据。
  • 数据本身并不是一定要存储在模型中,也可以存储在一个数据结构、一个独立的类、文件、数据库、应用程序中的其他组件中。
  • 这个类提供的接口让数据可以灵活的处理各种视图,这些视图可以将数据变现为:表格(table)、列表(list)、树(tree)等形式。

Qt还提供了一些现成的模型来处理数据项:

  • -> QStringListModel 用来存储一个简单的QString项目列表
  • -> QStandardItemModel 管理复杂的树形结构数据项,每一个数据项可以包含任意的数据
  • -> QFileSystemModel 提供了本地文件系统中文件、目录的信息
  • -> QSqlQueryModel、QSqlTableModel、QSqlRealtionalTableModel 用来访问数据库

视图

Qt提供了几种不同的类型的视图,他们都完全实现了各自的功能。

  • -> QListView 将数据项显示为一个列表。
  • -> QTableView 将模型中数据项先是在一个表格中。
  • -> QTreeView 将模型的数据项显示在具有层次的列表中。

代理

  • QAbstractItemDelegate是代理的抽象基类。
  • 从Qt 4.4版本开始,默认的委托实现由QStyledItemDelegate类提供,这也被用作Qt标准视图的默认委托。
  • QStyledItemDelegate 和 QItemDelegate 是相互独立的,只能选择其一来为视图中的项目绘制和提供编辑器,他们的主要不同就是:QStyleItemDelegate使用当前的样式来绘制他的项目,就是说你要使用样式表(QSS),就用这个作为基类

 

参考:

不二如是: https://fishc.com.cn/forum.php?mod=viewthread&tid=79233&ctid=447

柔弱胜刚强.
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Model/View模型视图
WChang的博客
07-29 1716
catalogbaseexampleTableTableViewTableModel base 一些ui部件,是要展示数据的(比如label上的数据、table里的数据),而这些数据 往往是外部动态的(比如来自于数据库) 也就是, ui部件 如何与 数据,相关联? 有两种方式: ui部件,内部再存储一份数据,即自己本身自带数据,这是很直观的想法 即,ui内部存储的数据 与 外部引用的数据,是两个东西。我们程序员需要自己 去确保,这两份数据是保证高度相同的。 这也说明,这种方式的 耦合性 很高。 但是,在大
模型视图框架(概念)
qq_45303986的博客
12-08 702
模型/视图类可以分为上述三组:模型视图和委托。这些组件中的每一个都由抽象类定义,这些抽象类提供通用接口,在某些情况下,还提供功能的默认实现。
Qt Model/View(模型/视图)结构
zhaominyong的专栏
07-25 881
Model/View(模型/视图)结构是Qt中用界面组件显示与编辑数据的一种结构,视图(View)是显示和编辑数据的界面组件,模型(Model)是视图与原始数据之间的接口。 GUI 应用程序的一个很重要的功能是由用户在界面上编辑和修改数据,典型的如数据库应用程序。数据库应用程序中,用户在界面上执行各种操作,实际上是修改了界面组件所关联的数据库内的数据。 将界面组件与所编辑的数据分离开来,又通过数据源的方式连接起来,是处理界面与数据的一种较好的方式。Qt 使用 Model/View 结构来处理这种关系,M..
模型-视图 教程
lucifer_凡
07-12 3831
模型/视图 教程每一个UI开发者都应该了解Model/View编程,这篇教程的目标就是对这个主题提供一个容易理解的介绍。Table, list and tree 窗口部件都是在图形用户界面中常用的组件。这些窗口部件能够通过两种不同的方式访问他们的数据。传统方式是通过窗口部件的内部容器来存储数据。这种方法很直观,然而在一些大型应用中,通常会引起数据同步问题。第二张方法是Model/View编程,用这种
QT学习:模型/视图基本概念
weixin_42374938的博客
07-02 317
Qt的模型/视图结构分为三部分:模型(Model)、视图(View)和代理(Delegate)。其中,模型与数据源通信,并为其他部件提供接口;而视图模型中获得用来引用数据条目的模型索引(Model Index)。在视图中,代理负责绘制数据条目,当编辑条目时,代理和模型直接进行通信。模型/视图/代理之间通过信号和槽进行通信,如图所示: (1)数据发生改变时,模型发出信号通知视图。 (2)用户对界面进行操作,视图发出信号。 (3)代理发出信号告知模型视图编辑器目前的状态。 一、模型 InterView框架
Qt开发知识、经验总结 包括Qss、数据库、Excel、模型/视图
最新发布
05-15
以下是关于Qt开发的一些关键知识点和经验总结,包括QSS、数据库操作、Excel文件处理以及模型/视图架构。 #### 1. QSS (Qt Style Sheets) QSS类似于CSS,用于定制Qt应用程序的外观。通过QSS,可以实现控件的颜色、...
基础知识学习笔记-MVC(模型-视图-控制器)
12-22
MVC 模型视图—控制器 一种软件架构模式,把软件系统分为三个基本部分模型(Model),视图(View),控制器(Controller) 用户通过 使用 控制器来 操作 模型模型负责 更新 视图中的内容,用户通过 检视 视图来...
2021年数据库面试基础知识总结.docx
12-06
数据库面试基础知识总结 一、数据抽象 数据抽象是指数据库中数据的逻辑...本文总结了数据库面试基础知识,涵盖了数据抽象、SQL语言、视图和完整性约束等重要概念,旨在帮助读者更好地理解数据库的基本概念和技术。
计算机二级公共基础知识考试要点.doc
12-02
计算机二级公共基础知识考试要点 本文档总结了计算机二级公共基础知识考试要点,涵盖了软件工程、数据结构、算法、数据库管理系统、软件设计和开发等方面的知识点。 一、软件工程 * 软件工程包括三个要素:方法、...
Django基础知识 URL路由系统详解
12-26
控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型视图完成用户的请求,其示意图如下...
MVVM模式模型视图视图模型(Model-View-ViewModel)
06-20
组成部分Model、View、ViewModel,程序=数据结构+算法。Model就是数据结构,ViewModel实现算法数据处理,View实现数据展现。 View:UI界面 ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model; Model:数据层 View与ViewModule连接可以通过下面的方式 Binding Data:实现数据的传递 Command:实现操作的调用 AttachBehavior:实现控件加载过程中的操作 View没有大量代码逻辑。结合WPF、Silverlight绑定机制,MVP演变出了MVVM,充分利用了WPF、Silverlight的优势,将大量代码逻辑、状态转到ViewModel, 可以说MVVM是专门为WPF、Silverlight打造的。 View绑定到ViewModel,然后执行一些命令在向它请求一个动作。而反过来,ViewModel跟Model通讯,告诉它更新来响应UI。 这样便使得为应用构建UI非常的容易。往一个应用程序上贴一个界面越容易,外观设计师就越容易使用Blend来创建一个漂亮的界面。 同时,当UI和功能越来越松耦合的时候,功能的可测试性就越来越强。
视图模型
zylg
11-30 717
视图模型 QFileSystemModel QTableModel QTreeNodel
模型-视图 编程
lucifer_凡
07-20 6322
模型/视图 编程模型/视图编程简介QT包含了 item view 类,这些类,使用模型/视图架构来管理数据与数据呈现方式之间的关系。这种架构引入了功能的分离,给程序员带来了非常大的灵活性来自定义数据的展示,也提供了一个标准模型接口,使得很多不同的数据源都能被现有的视图所使用。在这篇文章中,我们对模型/视图范例,与之相关的概念做了一个简单介绍,并且也描述了数据视图架构。这个架构中的每一部分都会被解释到
(三十七)模型视图设计模型
早起的虫儿灬
02-28 888
模型视图设计模式 模型视图设计模式的核心思想 1、模型(数据)与视图(显示)相分离 2、模型对外提供标准接口存取数据(不关心数据如何显示) 3、视图自定义数据的显示方式(不关系数据如何组织、存储)   注:模型里面并不真正存储数据(数据少的话也可以直接存储在模型里),模型只是负责从诸如磁盘文件、数据库、网络通讯等获得源数据,并提供给视图视图对数据进行修改,然后再通过模型更新源数据。
软件体系结构4+1视图模型
热门推荐
ananhao的博客
12-30 4万+
软件架构涉及到抽象、分解和组合、风格和美学。RUP4+1架构方法采用用例驱动,在软件生命周期的各个阶段对软件进行建模,从不同视角对系统进行解读,从而形成统一软件过程架构描述。
QT——模型/视图(model/view)
见证自己的成长之路~
06-29 9881
数据项中引入模型/视图架构,可以方便的将数据与表现层分开。 ------------------------------------- 为每个视图都提供了一个默认的委托——可以使用自定义的委托来替换显示没一项,并为可编辑项提供一个合适的编辑器。 ------------------------------------- 模型:用于存储数据项(data item)。 纯粹的视图部件:Q
Qt模型/视图原理(1):基本理论
黄邦勇帅的博客
10-17 5323
Qt模型/视图原理(1):基本理论 若对C++语法不熟悉,建议参阅《C++语法详解》一书,电子工业出版社出版。 数据通常由若干个数据项(item)组成。 MVC把需要处理的数据及其显示分离开来。MVC把图形界面分为三个部分:模型(Model)、视图(View)、控制器(Controller)。  模型:用于管理数据,注意,数据不一定需要位于模型之中  视图:就是呈现在用户面前的界面外观,视图负...
QT 模型视图编程概念
chichixiaoqiang的专栏
07-02 885
模型视图结构 Model-View-Controller (MVC) 是一种设计模式。它们通常由三个对象构成,Model是应用模型,View是屏幕显示,Controller定义了用户界面和用户输入的交互。如果把View和Controller结合起来,就成为了Model/View
QT 视图(view)模型(model)汇总
m0_58233509的博客
07-28 715
【代码】QT 视图(view)模型(model)汇总。
javaweb基础知识
06-02
JavaWeb 是指使用 Java 技术开发 Web 应用程序,常用的技术包括 Servlet、JSP、JDBC、Spring、Hibernate 等。以下是一些基础知识: 1. Servlet:是 JavaWeb 中最基础的组件,它是一个 Java 类,用于处理客户端的 HTTP 请求和响应。 2. JSP:是一种动态网页技术,可以将 Java 代码嵌入到 HTML 页面中,动态生成 HTML 页面。 3. JDBC:是 Java 连接数据库的标准接口,用于操作数据库。 4. Spring:是一个开源的 Java 框架,用于构建企业级应用程序。 5. Hibernate:是一个对象关系映射框架,用于将 Java 对象映射到数据库表中。 6. Tomcat:是一个开源的 Servlet 容器,用于部署和运行 JavaWeb 应用程序。 7. MVC:是一种设计模式,将应用程序分为三个部分,即模型视图和控制器,以实现应用程序的松耦合和可维护性。 8. RESTful API:是一种 Web 服务架构风格,用于设计可伸缩和可扩展的 Web 应用程序接口。 以上是 JavaWeb 的基础知识,如果想深入了解可以参考相关的书籍和在线教程。

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

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

热门文章

  • 简单UI和DLL 3283
  • 行编辑器(LineEdit) 1999
  • 自定义菜单(QWidgetAction) 1687
  • Animation(二-三种动画启动方式) 1582
  • C、Java、C++中的随机数机制解析 1538

最新评论

  • C、Java、C++中的随机数机制解析

    柔弱胜刚强.: 表情包大学时候写的,现在自己也看不懂了

  • C、Java、C++中的随机数机制解析

    BBQKirito: 佬,这么专业的文章咋没人赞呢。。。 正好我最近在出题造数据,想了解一下随机数产生机制,非常感谢!!!

  • trait和policy

    tumu_C: 强,茅塞顿开。还得练习才能变成自己的东西。

  • 数据库

    Lansonli: 博主原创不容易啊,过来支持一下哈,最近在更新大数据系列文章,有兴趣可以关注看看~

  • QTSize

    water___Wang: 最近正好在看这方面的东西

大家在看

  • C语言-位运算练习-6
  • Node.js 入门:
  • 每日一题——Python实现PAT乙级1104 天长地久(举一反三+思想解读+逐步优化)七千字好文 1979
  • 【基于Transformer的多输出数据回归预测】附核心代码讲解及核心源码 1758
  • 探索Docker容器网络 873

最新文章

  • 模型、视图、代理(自定义-1)
  • 数据库
  • QJson
2021年111篇
2019年40篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为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按天扣费昆明网站推广方案推荐哈密百度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 网站制作 网站优化