Qt 中模型视图编程的基本概念

news2024/11/19 2:57:09

背景

一个应用程序本质可以抽象为三部分:界面、逻辑处理、数据。程序中存储有大量的数据,经过逻辑处理后、通过界面展示给用户,同时用户可以通过界面对数据进行编辑,如下图所示:

在这里插入图片描述

Qt 中的模型视图架构就是用来实现大量数据的存储、处理及其显示的,这种架构引入的功能分离思想为开发者定制项目的显示提供了高度的灵活性。

Model/View 架构

Model/View 架构的主要目的是将数据的存储与显示分离,可以分为三部分:模型、视图和委托,如下图所示:

在这里插入图片描述

①.Model 模型:对外提供标准的数据解析、存储接口,不关心数据如何显示。

②.View 视图:从 Model 中遍历读取元素进行绘制,不关心数据如何组织存储。

③.Delegate 委托:在视图基础上可以自定义特殊的显示和编辑效果。

Model/View 原理

Model/View 的核心在于 Model 部分,如下图所示:
在这里插入图片描述

①.Model 的本质是对内存数据的解析方法,对内存数据进行索引,提供标准的数据存取接口。

②.在给视图指定模型后,视图通过索引从模型中自动获取和渲染数据。

③.Qt 中提供的 View 相关的类已经是封装完备的类,一般无需改动。

视图中不存储数据,用户可以通过视图直接操作内存数据。若采用标准显示控件进行数据显示,则需要同时维护两份数据,如下面所示:
在这里插入图片描述

Model/View 使用总结

Model/View 架构有以下优点:

①.数据和显示分离,一般对其中一方进行修改对另一方的影响很小。

②.多个视图可以同时设定为同一个模型。

③.View 部分一般可以直接使用 Qt 提供的控件,无需自行修改,减少代码量。

Model/View 架构具有诸多优点,但是代码编写没有一成不变之定则,一般以快捷、实用为准则,在一些简单的场景中使用标准数据显示控件就很方便,就没必要再定义 Model 了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring_第3章_AOP+事务

Spring_第3章_AOP事务 文章目录Spring_第3章_AOP事务一、AOP1 AOP简介问题导入1.1 AOP简介和作用【理解】1.2 AOP中的核心概念【理解】2 AOP入门案例【重点】问题导入2.1 AOP入门案例思路分析2.2 AOP入门案例实现【第一步】导入aop相关坐标【第二步】定义dao接口与实现类【第三…

8 常规聚类

常规聚类 聚类分析是解决数据全方位自动分组的有效方式。若将数据全体视为一个大类,这个大类很可能是由若干个包含了一定数量观测的自然小类”组成的。聚类分析的目的就是找到这些隐藏于数据中的客观存在的“自然小类”,并通过刻画“自然小类”体现数据…

舆情监控软件

随着中国互联网的快速发展,舆情监测成为工作中的一部分,如果没有舆情监控软件的及时介入,负面舆情将会迅速扩大并蔓延到各个方面,对社会以及公众造成严重的影响,舆情监控软件对企业政府有着深远影响,接下来…

Python学习小组课程P5-Python办公(2)Excel读取与Word生成

一、前言 注意:此为内部小组学习资料,非售卖品,仅供学习参考。 本系列课程: Python学习小组课程-课程大纲与Python开发环境安装 Python学习小组课程P1-Python基础(1)语法与数组 Python学习小组课程P2-Pyth…

【配电网重构】基于yalmip求解含sop+二阶锥配电网重构附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

ouster-32激光雷达使用---雷达输出数据分析

ouster-32激光雷达使用---雷达输出数据分析雷达输出数据分析所有数据imu数据雷达数据坐标系Rviz显示雷达输出数据分析 所有数据 查看当前topic消息种类 rostopic list终端输出 /clicked_point /initialpose /move_base_simple/goal /os_node/imu_packets /os_node/lidar_pa…

ADSP-21489的开发详解:VDSP+自己编程写代码开发(2-软件和硬件的开发环境搭建)

Visual DSP软件的安装 运行 setup 软件安装包,全部下一步即可完成软件安装,非常简单。我们的资料里提供了 VDSP5.1.2 软件,当然您也可以通过 ADI 公司官网下载。 VDSP5.1.2 软件官网下载地址: Visual DSP5.1.2的ADI官网下载链接…

2022深入学习C++教程

2022深入学习C教程 课堂和实践课程 – C 11 的功能、异常处理和 STL – 适用于学术界和工业界 课程英文名:Learn C Programming -Beginner to Advance- Deep Dive in C 此视频教程共30.0小时,中英双语字幕,画质清晰无水印,源码…

Composer交互文档如何在PPT当中使用

在往期的公开课中我们讲解了SOLIDWORKS Composer这样一款三维制作软件,Composer可以很好的利用SOLIDWORKS所设计的数据自动生成产品手册、装配目录、维修说明,以及销售和培训视频等,还可以为用户提供非常满意的交互式体验。 并且Composer和S…

抖音怎么录屏?这个方法,亲测好用

​抖音是现在流行的短视频软件之一,很多小伙伴喜欢用它来记录生活,分享生活中新鲜有趣的事情。有时候,在抖音上看到了喜欢的视频,想要分享给好友,发现抖音无法分享,这个时候就需要使用到屏幕录制功能了。那…

【电力系统】含电热联合系统的微电网运行优化附matlab代码和复现论文

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

我国跨国企业外汇风险管理——以海尔公司为例

目 录 摘 要 I 一、 绪论 1 (一) 选题背景及意义 1 (二) 国内研究现状 1 1. 国外研究现状 1 2. 国内研究现状 3 (三) 研究内容及方法 3 (四) 跨国企业外汇风险…

C语言 字符串

C语言 字符串引言一、字符串的创建方式二、字符串函数1. strlen 函数使用示例1使用示例2模拟 strlen 函数2. strcpy 函数使用示例模拟 strcpy 函数3. strcat 函数使用示例模拟 strcat 函数4. strcmp 函数使用示例模拟 strcmp 函数5. strncpy、strncat、strncmp6. strstr 函数使…

STC 51单片机55——加速度计GY-29 ADXL345

//实现与VB模拟鼠标通信,但是噪声很大 //采用输出角度的方式,输出x与z的角度和y与z的角度 //在VB中将屏幕水平与垂直等分1800份(角度*10得到的结果) //*************************************** // GY-29 ADXL345 IIC测试程序 // …

VIVADO时序约束之时序例外(set_false_path)

前言 当FPGA设计中的逻辑行为不能满足默认的时序要求时,设计者需要使用时序例外语法对该逻辑行为进行处理,例如:有些结果只需每个一个或多个时钟周期捕获一次。 vivado开发工具支持4个时序例外约束的语法,如下表所示:…

html5播放器禁止拖拽功能实例(教学内容禁止拖动观看)

html5播放器禁止拖拽功能实例&#xff08;常用于场景&#xff1a;企业培训、在线教学内容禁止学员拖动视频进行观看&#xff09; 实例1&#xff1a;参数开启后&#xff0c;视频教学内容或视频课件将不允许拖动进度条。 <div id"player"></div> <scr…

MAC执行graalvm并编译

1.先下载 https://github.com/graalvm/graalvm-ce-builds/releases 解压后放到/Library/Java/JavaVirtualMachines 然后执行sudo xattr -r -d com.apple.quarantine path/to/graalvm/folder/ IDEA添加JDK就是这个包 然后这时候可以正常启动了 原项目启动7秒&#xff0c;用这…

[附源码]计算机毕业设计基于Springboot校园订餐管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于BP神经网络进行手写体识别(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 字符识别长期以来都是采用传统的识别方法, 对印刷体字符的识别率一般只是稳定在96%左右, 未能进一步提高, 而对手写体字符的识…

推荐一款语音识别软件

一、简介 使用接口转换需要输入的语音为文字。 给大家带来一款语音识别软件&#xff0c;想做智能识别语音设备或者想给项目增加功能的同学可以看下 这款软件是使用python写的&#xff0c;其实开发语言无所谓用其他语言也可以写 代码还是挺简单的。 这款软件主要使用接口完成识…