Qt学习笔记,Qt程序架构设计要旨

Qt 项目架构:架构设计 程序架构:(1)UI模块:负责处理来自业务逻辑层或者其它模块的数据展示,把用户操作的发送给业务逻辑模块。(2)通信模块:TCP、UDP、mqtt、串口等,采用单例模式负责外部通信。(3)数据库模块:读取和保存数据。(4)业务逻辑模块:处理通信模块的返回数据,并把结果通知UI模块。(5)中间层:关联通信模块和业务逻辑模块。(6) 独立模块(初始化配置模块、守护进程、更新模块、日志收集模块…)。 阅读详情

Qt学习笔记,Qt程序架构设计要旨


时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中。自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3D等等,但这些会在接下来的工作里不断的接触和深入。现在学习Qt的心得就是:不要以为自己可以coding,就是对Qt的掌握!这个是严重错误的看法,现在会写出code了也只能说你入门了。对于Qt的学习需要不断坚持不断实践。而要说真正的掌握Qt,那么对于Qt的核心那是必须要掌握的!那么什么才是Qt的核心呢?这一个多月的了解,不得不说Qt的Model/View 机制,就是Qt的核心所在。

当然,Qt本身为我们提供的可以使用的Model很多了,View也有很多。但是,事实就是不尽如意,也就是说Qt提供的不一定就一定可以满足我们的实际需求的,所以更多的是在Qt库提供本质的基础之上我们的再造。

所谓再造就是在已有的系统库的基础上加入我们自己的部分。其实,Model就是一个数据的加工厂,对于来自外界的数据进行加工,加工之后的数据利于我们与使用这个model的view的包装。但是,难点就是在于这个Model中自己定义实现的数据加工部分,也正因为这对Qt的Model/View 学习添加了很大的难度。


其实在做Qt程序过程中应该考虑很多的,这与常规的软件开发没有任何特别之处,我这里大致罗列一下:

1、我们是做软件的,那么对软件的执行效率这个是必要考虑的,对于用户的不同(用户的软件工作环境),我们要考虑到很多的软件执行效率的限制条件。

2、在软件编码中,在考虑软件的执行效率的基础之上,我们在实际编码中应该如何做。

3、对于开发的软件,要考虑到后天的维护和系统的升级

正式,设计模式中的:软件的移植,软件的扩展,软件的复用



下面在说说对于上面给出的没一点的个人看法:

对于1和2:记得初中学政治的时候,说道——环境,谁污染,谁治理。对了系统资源(硬件,软件)也是如此,对于硬件资源,与效率相关的那就是内存了,软件那就是我们开发的软件与操作系统的协作关系了。在软件开发编码过程中一定要牢记,向系统申请的资源一定要按时归还。对于有众多模块的程序,比如有很多的窗体,我们在其中的一个窗体模块中只需要获取她的数据,其他都不需要,那么我们就可以在某一个需要此模块的地方申请一定资源用于这个模块,并将她的数据取出,用完了再将她使用的资源释放掉。




(此文部分已部分作者本义,因为原始版本不小心操作以及丢失,部分内容不完整,但是作者心意,若新得,必分享)



架构设计(Qt项目) 一、分类 1、可复用模块用pri分门别类不同文件夹存放代码文件。 2、同类型的代码放在一个文件夹中,如界面类、通信类、管理类、配置类等。 3、项目大时用插件组织,两种:一种是普通动态库形式的插件,必须和主程序放在一起;一种是Qt机制的插件,放在指定的目录。 ... 阅读详情

相关推荐

QT学习笔记

QT学习笔记(一) 作者:Kagula 最后更新日期:2015-01-07 目的: 了解QT基本开发流程。 正文: 准备: 环境: VS2010SP1、 VS2013Update3、 Win7SP1-64bits 安装: [1]Qt 5.4.0 for Windows 32-bit (VS 2010, OpenGL, 625 MB)  [2]V

lee353086的专栏 1万+

QT跨平台应用程序开发框架(5)—— 常用按钮控件

QPushButton 表示一个按钮,我们前面使用过很多次,继承自 QAbstractButton,这个类是一个抽象类,是其他按钮的父类,如下图:c++面向对象三大特性——多态_c++三大特性实例-优快云博客是一个包含纯虚函数的类,无法创建出实例,仅仅是为了被派生类继承并且派生类继承后后也不能实例化出对象。只有重写虚函数派生类才能实例化出对象属性说明text按钮中的文本icon按钮中的图标iconSize按钮中图标的尺寸shortCut按钮对应的快捷键autoRepeat。

aaqq800520的博客 1331

【Qt系列教程】一、认识Qt、安装Qt、运行Hello Qt

Qt 是一个跨平台应用程序开发框架,主要使用 C++ 和 QML 进行开发,并支持 Python。Qt6 于 2020 年发布,带来了对 C++17 的支持、新的图形架构 RHI 等多项改进。通过在线安装器下载并安装 Qt 后,可以使用 Qt Creator 创建并运行一个简单的 "Hello World" 项目

leoatliang的博客 2471

目录:四种Qt程序的架构设计方法

4. Qt插件(Qt Plugins)是一个松散耦合的设计模式,它允许您将代码分解成可重用的模块。使用Qt插件,可以将应用程序的不同功能分离出来,创建可重用的组件。3. 分层架构是一种常见的软件架构设计方法。在Qt中,可以将应用程序分解成多个层次,例如用户界面层、业务逻辑层和数据访问层等。这样可以使得应用程序的各个部分互相独立,更容易维护和扩展。2. 使用信号和槽机制Qt中的信号和槽机制是一种灵活的方式,可以将不同的组件连接在一起。通过信号和槽机制,可以实现组件之间的松散耦合,使得代码更加易于维护和扩展。

DICA的SEOer专栏 3012

Qt:一个强大而灵活的跨平台应用程序开发框架

代码示例中的源代码是简单的示例,用于演示Qt框架的一些基本特性。实际应用中,开发人员可以根据自己的需求和项目要求,使用Qt框架提供的丰富功能和组件进行开发。在Qt的官方文档和示例代码中,您可以找到更多详细的教程和示例,以帮助您更好地理解和使用Qt框架。它提供了丰富的工具和功能,支持跨多个平台进行开发,并具有高度的可定制性和灵活性。它提供了丰富的工具和功能,使得开发人员能够创建高性能、可扩展和易于维护的应用程序。下面将详细介绍Qt框架的优点,并提供一些相关的源代码示例。

CodeVorter的博客 852

时间序列学习(4):平稳性检验(单位根检验、ADF检验)

时间序列学习(4):平稳性检验(单位根检验、ADF检验)1、单位根检验2、ADF检验3、指数走势的检验4、对数收益率序列检验 相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。 这篇笔记来就谈一谈平稳性的检验。 到目前为止,我们有了以下的时间序列模型: 白噪声; 随机游走; AR模型; MA模型; ARMA模型。 我们知道白噪声、MA模型一定是平稳的(这里的平稳都是弱平稳);随机游走一定是不平稳的;ARMA模型取决于其AR部分。 所以唯一需要做平稳性检验的就是AR模型。 1、单位根检验 先来看一阶

lucialucia的博客 7万+

QT常用软件架构

第一次写博客,只做个分享吧,关于软件架构的常用模型目前找到的最详细的解说https://blog.youkuaiyun.com/amwha/article/details/73928281

老赵的博客 5218

运算放大器基础1——用作比较器

运算放大器,运放,在电路设计中非常常见。在图2中,当前状态下,开关切换到0V,“正相输入”和“负相输入”都是接地,运放两个输入端电压相同。最后,调节可变电阻,使其两端电压大于3.37V,比如3.43V,作为运放正相输入,由于电压大于反相输入,LED点亮(运放输出为5V)。其次,调节可变电阻,使其两端电压小于3.37V,比如2.09V,作为运放正相输入,由于电压小于反相输入,LED不点亮。好,现在我们将0.1V电源换个方向,这样实际“正相输入”的是-0.1V,比“负相输入”的电压要低,看看输出是什么?

m0_60069998的博客 6123

探索QT软件开发的架构设计:从设计理念到实践应用

在现代软件开发中,架构设计是确保应用程序高效、可维护且可扩展的关键因素。Qt是一个跨平台的应用程序开发框架,它提供了强大的工具和库来支持复杂的用户界面和系统级应用开发。本文将深入探讨Qt软件开发的架构设计,包括核心设计理念、常用架构模式、具体实现策略以及实际案例分析,旨在帮助开发者理解如何在Qt中构建健壮且高效的应用程序架...

cnzzs的博客 2307

CISSP背书三次失败后的终极解决方案

本文分享了作者CISSP认证三次线上背书审核失败的经历与终极解决方案。针对(ISC)²官方审核的严格性,文章详细剖析了使用公积金证明、工作证明盖章签字等常见材料的误区,并最终提出了通过构建“官方邮件往来”证据链的核心策略,以动态、可验证的方式成功通过审核,为后来者提供了详实的避坑指南和实操清单。

weixin_29219539的博客 154

使用下一代的嵌入式IDE-PlatformIO 教程

1.生成工程 1.1 打开STM32CubeMX: 选择你的MCU,这里我用的是STM32F103RC RCC中开启外部HSE时钟,外部时钟比HSI更稳定些 开启DEBUG 4线 打开串口1用于打印调试信息,波特率115200,校验位0,停止位1 打开串口2用于MODBUS协议,波特率9600,校验位0,停止位1 接入RT-thread:参考官方文档 基于 CubeMX 移植 RT-Thread Nano 根据官方文档,需要1.取消生成HardFault_Handler、PendSV_Handler、Sy

jiladahe1997的博客 3万+

QT跨平台应用程序开发框架(1)—— 环境搭建

其实说是安装三个东西,其实只要安装一个Qt SDK,其它两个都有了。之后一路点击下一步即可,就是安装路径不要带中文,不要带特殊符号和空格。创建好项目后会预先生成一些代码,我们来讲解一下这些代码做了什么。Windows下还有哪些方案可以开发GUI?之后一路确认然后安装即可。

aaqq800520的博客 3885

ST电机库实战:从状态机到稳健启动流程的深度解析

本文深度解析了ST电机库中状态机的核心作用与稳健启动流程。状态机作为电机控制的“交通指挥官”,通过IDLE、CHARGE_BOOT_CAP、ALIGNMENT等一系列状态的严格跳转,确保了永磁同步电机(PMSM)和直流无刷电机(BLDC)的安全启动与可靠运行,是避免硬件损坏和实现平稳控制的关键。

weixin_29161785的博客 226

QT跨平台应用程序开发框架(9)—— 容器类控件

QGridLayout 用来实现网格布局的效果,可以达到 M * N 的这种网格效果,主要属性和 QHBoxLayout 类似,但是设置 spacing 的时候是按照垂直水平两个方向来设置的。每个 Widget 只能设置一个布局管理器, 但是可以通过拖拽方式创建两个布局遍历器,但是这样创建的布局管理器仅仅只会将内部控件重新组合位置,并不会像上面一样随着窗口大小改变。而容器内控件包含的直接就是我们前面介绍的一堆的控件。解答:我们前面使用ui创建界面时,都是手动拖拽方式来布局的,其实这种方式不科学。

aaqq800520的博客 1155

深入解析:武汉光庭信息技术 Android CarPlay 开发岗位的技术要求与面试准备(大连)

武汉光庭信息大连分部招聘Android CarPlay开发工程师,要求专科以上学历及2年以上Android开发经验,需精通CarPlay集成技术与车载系统开发。该职位涉及Android底层框架修改、CarPlay协议实现及车规级系统开发,需处理USB/HID驱动、图形合成等技术难点,并确保通过Apple严格认证。求职者需具备扎实的Android开发能力,熟悉车载环境特殊性,包括系统稳定性保障、人机交互适配等技术要点。文章深度解析了职位技术内涵,并提供面试问题与参考答案,帮助求职者全面准备这一复合型技术岗位。

郑伟强dev的专栏 400

华为OD机试双机位C卷:流量波峰 (C/C++/Py/Java/Js/Go)

华为OD机试双机位C卷 流量波峰,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 流量波峰。

qq_45776114的博客 2445

QT跨平台应用程序开发框架(6)—— 常用显示类控件

但是上面我们对 Label 尺寸的设置是“一次性”的,就上面的程序而言,只要我们扩大或缩小窗口大小,里面的 Label控件大小是不会变的,所以下面我们让 Label 的大小随着窗口大小实时发生改变。这个和 HTML 前端中一样的,有时候按钮旁边会有一些字,但是为了方便用户点击,一般用户直接点击按钮的旁边的文字也可以选中按钮,所以这个设置伙伴就是将文本和按钮“绑定”我们先使用 QLCDNumber 显示一个初始的数值,比如4,然后程序启动后,每过一秒数字就 -1,直到 0 就结束。

aaqq800520的博客 1549

交换机初始化配置详解

MGMT或称MGT(Management Port,管理端口)是一个可以连接计算机的三层主机端口,如下图所示。只需使用一条双绞线跳线,就可以将计算机的以太网端口与交换机的MGMT端口连接在一起,实现对交换机的配置与管理。也就是说,可以使用MGMT端口代替Console端口实现对交换机或交换机堆叠的网络管理。MGMT端口既可用于交换机的初始化,也可以在交换机初始化完成后,以Telnet、Web浏览器或Cisco CNA方式进行管理。当将计算机连接到独立的交换机时,连接方式如下图所示。

悦分享 1995

QT跨平台应用程序开发框架(4)—— 常用控件QWidget

有时候 Qt 内置的光标可能满足不了我们的需求,所以 Qt 也允许我们通过自定义图片的方式来设置光标//设置图标//设置窗口的图标//当我们点击时,是图片左上角在进行点击//假设我在按钮的边缘位置进行点击,但由于光标图片的左上角到按钮外面去了导致点击不到//所以我们可以设置实际点击在图片光标里的位置,10,10表示点击实际生效的位置,左上角是0,0如果导入的图片太大,我们也而已通过下面的API对图片进行缩放:iconfont-阿里巴巴矢量图标库。

aaqq800520的博客 1567

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

QT跨平台应用程序开发框架(2)—— 初识QT

目录一,创建helloworld1.1 通过图形化1.2 通过代码1.3 通过编辑框1.4 使用按钮二,对象树2.1 关于对象树2.2 演示释放流程三,乱码问题3.1 为什么会有乱码问题3.2 解决乱码问题四,认识Qt坐标系五,周边5.1 命名规范5.2 快捷键5.3 如何使用帮助文档先双击 .ui 文件来到图形化编辑页面:然后就会在页面的右上方显示我们安装的控件:最后我们点击左下角运行按钮,我们创建的窗口上就会显示一个hello world字符串之后我们就可以往label对象里面设置一个文本:之后直接运行

aaqq800520的博客 2191

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

QT跨平台应用程序开发框架(8)—— 多元素控件

所以要想数据不被丢失,就得需要和“学生管理系统”一样,实现一个“保存数据到文件”和“从文件读取数据”的两个操作,每次运行程序时读取文件数据,每次关闭程序时,在析构函数里添加保存文件的操作。QTreeWidget 表示一个树形控件,里面的每个元素都是一个 QTreeWidgetItem,这个类可以包含多个文本和图标,每个文本/图标为一个列。上述几个控件相关的操作,数据都是在内存中保存的,重新运行程序后,数据都会重置。可以发现,说是6个控件,其实是3个,只是两两一组而已。

aaqq800520的博客 890

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QT跨平台应用程序开发框架(7)—— 常用输入类控件

上面的 inputMask 功能有限,只能进行简单的验证,要想进行更复杂的验证,就要使用“正则表达式”注意:这里的格式化符号的含义,不要死记,不同语言/库的设定规则是存在差异的,⼀定是用的时候再去查。是否开启 undo(ctrl+z 撤销) / redo(ctrl+y 撤销撤销) 模式。效果就是我们在输入框中输入字符,上面的label会同步显示,由于太简单就不贴演示了。可以看到,1号的下午五点到2号的凌晨0点,中间是只隔了7小时的,但是多算进去了一天。

aaqq800520的博客 1051

QT跨平台应用程序开发框架(13)—— Qt界面样式优化

部分控件内部包含了多个“子空间”,比如 QComboBox 的下拉框的多个内容和 QSpinBox 微调框的上下选择按钮等,我们可以通过 子控件选择器“两个冒号”,针对子空间进行样式设置。创建好后,我们手动在电脑的文件管理器的项目目录下,新建一个 style.qss 文件,就和图片文件一样,只是图片变成了 .qss 文件,其余操作完全一致。问题解答:可以看到,当冲突的时候,局部样式的优先级大于全局样式,可以说是先渲染了全局样式,后渲染的局部样式,导致局部样式覆盖了全局样式。pressed 就是鼠标松开时。

aaqq800520的博客 1128
上一篇: linux下 tar解压 gz解压 bz2等各种解压文件使用方法
下一篇: Eva开发文档1 ---------- libeva 类描述
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值