![](https://img-blog.csdnimg.cn/9b8e3de167fa4b2dbd33dbbd46b95aee.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
零基础学QT
文章平均质量分 93
在学习本专栏文章需要掌握基本的C++开发能力,如有JS语言能力更佳,后续的QML文章需要使用到一些JS语句。
本专栏的文章主要偏向于嵌入式方向,本人也是从事嵌入式物联网开发,所以后续的学习可能会用到一些单片机、ARM开发板、串口模块、网口模块等嵌入式工具,结合实际开发所需进行学习。
凉开水白菜
有嵌入式arm及qt软件开发方面三年经验,嵌入式qt领域专家,csdn/掘金平台优质作者,擅长嵌入式软硬件项目方案设计,qt界面开发,单片机程序设计等。
展开
-
【零基础学QT】文章导航篇
学习路线:先从简单的QT基本框架学起,再到QT进阶的模块使用,再到现在QT主推的QML学习,每章节的学习都配合一个小例子和小实验来巩固本章内容,在学习完一些章节后我会完成一个实战项目揉合近期所讲到的文章内容,文章中所编写的代码都会通过百度云盘更新免费提供下载;原创 2022-09-21 11:02:50 · 853 阅读 · 0 评论 -
【QT进阶】第十四章 自定义QGraphicsItem的实现设备节点
在第六章讲解了GraphicsView的使用,在该章节中主要是使用现有的画框写字,在实际使用中不会是简单的绘画一个框或则绘画一个文字,本章节引入一个自定义QGraphicsItem的用法实现设备节点,在这个章节会使用到QPainter和GraphicsView的内容建议配合使用。原创 2024-05-02 00:24:46 · 104 阅读 · 0 评论 -
【QT进阶】第十三章QT动画类的使用QAbstractAnimation
QPropertyAnimation 是 Qt 自带的动画类,该类可以实现简单的控件动画效果,比如对控件的移动、缩放、不透明度这些来做动画效果,下面通过几个例子来熟悉给控件添加动画。动画类的扩展性比较强,对动画比较有研究的同学可以通过上面几个简单的组合实现优美的动画,各个Group的组合也可以组合成不同的效果,期待大家的作品;完整的代码工程我都放在百度云盘的软件里面,如果需要可以自行下载;提取码:qtqt我是凉开水白菜,我们下文见~原创 2024-04-02 00:36:52 · 115 阅读 · 0 评论 -
【QT进阶】第十二章QT事件的使用
在GUI程序中所有基于窗口的应用程序都是基于事件,主要使用来实现回调这样才能保证GUI运行的效率达到最高,QT框架内部也提供了一系列的事件处理机制,QT中事件的产生流程是先派发事件(event())再到事件过滤器(eventFilter)然后分发事件(在过滤器中执行是否派发由事件过滤器返回值决定)最后是事件的处理(xxxEvent()),QT提供的事件接口都有默认的处理,当我们需要使用到某个事件的某个阶段的时候只需要重写事件的处理动作即可,例原创 2023-11-14 12:07:17 · 304 阅读 · 0 评论 -
【QT实战】第三章 将类中的成员函数放在多线程中执行
将类中的成员函数放在线程中执行前言思路代码实现mythread.cppmythread.h主类中的调用最后效果和总结前言最近用到一个sdk启动有一个成员函数在使用的时候会阻塞GUI线程导致执行该成员函数过后,再操作主页面会导致程序卡顿甚至胡乱操作会导致程序崩溃,然后为了解决这个问题我第一个想到的肯定是多线程实现,晚上的多线程教程帖子很多但是都是再多线程的类的run函数中写具体的实现,都无法实现将一个类中的成员函数移到线程中执行最终我根据晚上现有的线程最终实验出以下的方法解决这个问题。文章1:https原创 2021-11-21 19:21:54 · 3795 阅读 · 3 评论 -
【QT实战】第二章 QT窗体之间值的传递,多种方法实现
文章目录1、新建工程2、全局变量extern3、公共成员函数public4、信号与槽singnals5、总结与工程分享在桌面程序中很多时候会出现很多窗口,各个窗口中免不了会有数据的传输,下面给大家带来三种方法来实现QT的窗体数据传递。1、新建工程新建工程过后添加一个新的窗口到工程中,实际目录结构如上,然后我们实现按钮方式打开新建的窗,在主窗口中包含副窗口的头,再添加子窗口的类到主窗口的成员变量中,然后我们添加一个按钮并通过槽函数的方式打开子窗口。到这里我们要实现传值的工程就搭建完成了下面开始传值的原创 2021-10-24 00:15:00 · 19366 阅读 · 5 评论 -
【QT实战】第一章 QT实现画板工具的制作
使用QT实现画板工具的功能,并通过交叉编译器移植到ARM开发板上运行,通过该程序实现ARM板屏幕触摸功能的测试。实现mouseMoveEvent鼠标移动事件当我们的鼠标发生移动的时候记录两个坐标值,一个为移动起始坐标,一个为移动后的坐标,然后调用update重新绘画我们的页面,在paintEvent绘画事件中我们使用QPainter绘画直线,因为鼠标移动事件是实时发生,所以新坐标和旧坐标的距离只会有一个点的差距,所以绘画的直线会被描述为一个像素为1X1的点,然后通过这些点就组成了链接的线。.........原创 2022-06-17 15:04:35 · 2721 阅读 · 2 评论 -
【QT进阶】第十一章 QJson的创建与读取解析 - 实例天气获取并解析
QJson的创建与读取解析Json的基本使用QJsonObject:存储Json对象QJsonArray :存储Json对象数组QJsonDocument:解析Json文档QJsonValue :解析JsonObject中对应键的值QJsonParseError:存储解析Json过程中出现的错误实例分析:获取天气Json数据分析netJson.cppnetJson.h最终效果+工程下载Json的基本使用QJsonObject:存储Json对象// 构建 json对象 QJsonObject m原创 2021-11-22 00:10:33 · 1695 阅读 · 0 评论 -
【QT进阶】第十章 QT链接操作Mysql数据库
在工作中处理数据肯定会用到数据库,在开发中我们可以用作于采集数据存储、配置信息、Log信息等大批量数据存储的要求;市面上数据库非常的多种例如:Oracle数据库、ACCESS数据库、SQL数据库、DB2数据库、Sybase、MySQL、MariaDB、VF、SqlServer、SQLite,在本文中我们选择使用Mysql,也比较推荐使用Mysql数据库,他的优势有一下几点:1、可以处理拥有上千万条记录的大型数据;2、支持常见的SQL语句规范;3、可移植行高,安装简单小巧;原创 2023-06-29 17:35:13 · 218 阅读 · 0 评论 -
【QT进阶】第九章 Qt生成、打印PDF文件
本章是接上一章节的Table表格数据的增查删改,本章将使用上一章完成的代码来进行本章节的实验,本章的内容为通过QT实现PDF的生成和文档的打印,内容比较简单,会用到一些Html的知识,QT生产pdf有两种方式一种是QPainter一种是通过html的方式,两种方式其实都会用到QPainter所以需要在.pro文件中加入QT += printsupport;我更推荐使用html的方式会更加的灵活和简单,下面我们直接开始;原创 2023-06-20 16:39:52 · 275 阅读 · 0 评论 -
【QT进阶】第八章TableView的应用,表单数据的增查删改
QTableView实现了显示模型中项目的表视图。该类用于提供以前由QTable类提供的标准表,但使用Qt的模型/视图架构提供的更灵活的方法。QTableView类是模型/视图类之一,也是Qt模型/视图框架的一部分。QTableView实现了QAbstractItemView类定义的接口,使其能够显示从QAbstractItemModel类派生的模型提供的数据。原创 2023-06-06 22:37:34 · 771 阅读 · 0 评论 -
【QT进阶】第七章 系统托盘的设计
本章的内容比较简单,但是对于一个完整的软件设计也是必须要学习的一个功能模块,本章设计的目标实现一个系统托盘,软件可以退出软件,通过系统托盘保留软件后台,通过系统托盘可以重新打开软件或则退出软件。原创 2023-04-20 11:23:56 · 153 阅读 · 0 评论 -
【QT进阶】第六章 GraphicsView、QGraphicsScene的使用
对于绘图QT提供了两个类,这里简单介绍他俩(QPainter 和GraphicsView)的区别,QPainter英译过来就是画笔的意思,而这个类就是在一个平面绘画,画出来的画面不能后期更改,一般使用的地方就是制作一些炫酷的控件后续不做大的更改;QGraphicsView一般是用来做图形管理他可以对单个图进行管理操作,例如移动、放大缩小、删除以及增加真的图像模型。本章主要讲解QGraphicsView,QGraphicsView一般由三个部分组成:1、GraphicsView:看法;看;视野;原创 2023-04-10 20:53:41 · 379 阅读 · 0 评论 -
【QT进阶】第五章 QT绘图之自定义控件--仪表盘绘制
通过上一章的学习我们学会了使用画笔画家工具,通过这个工具我们可以使用代码绘制我们自定义的控件,这样可以弥补QT的控件不完整的问题,心中有坐标万事QPainter;本章节完成目标:绘制仪表盘。原创 2023-02-28 13:05:05 · 697 阅读 · 0 评论 -
【QT进阶】第四章 QPoint画笔画刷的使用
本章主要讲解的内容是QPainter的使用,通过本章我们会实现一个QPainter可以绘制一切想要的图形,从最简单的直线到其他任何复杂的图形(只要心中有坐标万物都可QPainter),还可以用于绘制文本和图片,QPainter一般在一个部件重绘事件的处理函数paintEvent()中进行绘制操作,所以本章我们的核心代码也就是实现paintEvent这个函数;QRectF &rectangle 表示浮点数的矩形坐标 不带F的表示整数矩形坐标系startAngle 开始角度。原创 2023-01-17 16:08:58 · 2231 阅读 · 0 评论 -
【QT进阶】第三章 QModbus-RTU主机的配置及使用
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。Modbus 通信协议具有以下几个特点(更多信息可以访问查询):Modbus 协议标准开放、公开发布且无版税要求,用户可以免费获取并使用 Modbus 协议,不需要缴纳许可证费;原创 2022-12-30 18:02:21 · 1108 阅读 · 1 评论 -
【QT进阶】第二章 QCharts基本使用和介绍
简介配置本章主要使用的类介绍饼状图实现效果实现流程完整代码折线图实现效果实现流程完整代码曲线图实现效果实现过程完整代码条形图实现效果实现过程完整代码面积图实现效果实现过程完整代码散点图实现效果实现过程完整代码添加标题QChart美化动画效果主题设置抗锯齿opengl加速添加背景阴影动态曲线小实验代码下载Qt图表模块提供了一组易于使用的图表组件。它使用Qt图形视图框架,因此图表可以很容易地集成到现代用户界面中。Qt图表可以用作QWidgets、QGraphicsWidget或QML类型。原创 2022-12-13 00:28:34 · 585 阅读 · 0 评论 -
【QT之OpenCV】第一章 在ubuntu下移植OpenCV
OpenCV(开源计算机视觉库:http://opencv.org)是一个包含数百种计算机视觉算法的开源库。该文档描述了所谓的OpenCV2.x API,它本质上是一个C++API,而不是基于C的OpenCV1.x API(自OpenCV2.4发布以来,C API已被弃用,未使用“C”编译器进行测试)OpenCV具有模块化结构,这意味着该包包括多个共享或静态库。核心功能(Core)定义基本数据结构的紧凑模块,包括密集多维数组Mat和所有其他模块使用的基本功能。原创 2022-10-28 15:15:18 · 1282 阅读 · 0 评论 -
【QT进阶】第一章 多线程QThread类的使用
在进行桌面应用程序开发的时候, 假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。在 qt 中使用了多线程,有些事项是需要额外注意的:默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新。原创 2022-10-24 17:16:58 · 962 阅读 · 0 评论 -
【零基础学QT】第十章 项目打包,利用Inno Setup制作软件安装包
本章内容主要讲解的内容不是QT,主要是Inno Setup软件的使用,我们发给客户的程序肯定不会只有是一堆代码,这样客户也看不懂,也不知道怎样使用,所以我们需要使用软件来制作安装程序,直接让客户安装打开就可以使用;原创 2022-09-19 17:33:31 · 746 阅读 · 0 评论 -
【零基础学QT】第九章 窗口美化QSS的使用
在我们前面制作的窗口 我们可以看到都是比较丑陋的,在一个项目中肯定是不能就这样发布软件的,所以本章我们来制作一个美观的主界面窗口,同时会介绍使用QSS进行窗口的美化,也会通过代码实现一些自定义窗口的效果,首先我们需要创建一个我们的实验工程,本次实验我们做一个登录界面,布局如下你们的布局不一定要和我相同,该章的内容并不限定布局,主要是针对窗口和单个控件的美化,最终的效果是可以根据自己的审美进行修改的,下面我们一步步的开始美化我们的窗口;原创 2022-09-18 04:54:37 · 1734 阅读 · 0 评论 -
【零基础学QT】第八章 文件操作,网络文件传输实验
在上一章我们实现了网络通信实验,本章学习QT的文件操作,并结合上一章的内容来完成一个基于UDP通信的文件传输工具;三种构造函数,第一种直接传输文件路径第二种,传输父对象,一般传输给主窗口类,当主窗口类销毁该类也同时销毁第三种,传输文件路径和父对象,直接赋值文件路径和父类;第二种构造函数方法没有传入文件名,这个时候我们就需要使用这个函数来设置需要操作的文件路径了;原创 2022-09-10 02:34:15 · 276 阅读 · 0 评论 -
【零基础学QT】第七章 网络通信,TCP、UDP通信实验
本章主要学习网络通信,我们主要需要了解的是TCP协议和UDP协议,TCP 协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。UDP是一种无连接的传输协议,UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法QT提供了TCP/UDP的套接字通信,使用时需要包含网络模块和对应得头文件进行使用,下面我们来实现一个TCP得客户端和服务端来讲解本章内容;TCP通信一般步骤:1.listen。原创 2022-09-07 22:12:34 · 1665 阅读 · 0 评论 -
【零基础学QT】第六章 定时器QTimer 控制LED闪烁
本章接上一章串口模块的工程我们实现控制单片机LED灯的闪烁,在上位机开发中很多地方需要定时发送指令到下位机,例如心跳包、下位机定时任务、设备在线判断等等,定时器使用相对比较简单所以本章结合上个实验来添加功能;目标:实现控制单片机LED一秒一闪烁;...原创 2022-08-29 11:56:04 · 969 阅读 · 0 评论 -
【零基础学QT】第五章 串口模块,小实验控制单片机LED灯
本章主要学习QT下的串口通信,嵌入式领域较常用的通信方式之一,做上位机开发必会使用到的一种通信手段,在这之前我们需要先了解串口配置的流程,上面图中为stm32初始化串口的代码,下面这一部分是属于stm32内部硬件的初始化我们QT上位机可以忽略这部分;可以看到配置我们串口结构体的参数分别有:波特率、字长、停止位、奇偶校验、硬件流控、收发模式,这些配置完成后就可以打开串口进行通信了;原创 2022-08-24 17:07:19 · 1062 阅读 · 0 评论 -
【零基础学QT】第四章 控件学习方法,问卷调查小界面
本章主要学习简单的布局以及几个常用控件的使用方法,本篇文章对控件的使用并非全面,要完整的了解一个控件需要学习QT帮助手册的使用,该篇大部分内容都出自帮助手册,在学习一个控件有很多办法,有官方例程、帮助手册、网上博文,所以后边应该不会再出太多QT的基本控件的用法了(而且qt的函数名本身也非常容易理解看一看就知道其大概作用),本章说明的几个控件还是比较常用的,后续我们还会学习自定义控件,在本身存在的控件进行进一步封装;原创 2022-08-22 17:32:46 · 371 阅读 · 0 评论 -
【零基础学QT】第三章 信号与槽的学习,QPushbutton控件
通过名称我们就可以得知QPushbutton是一个按钮控件,通过QT帮助手册我们可以知道如果要使用该控件类需要包含头文件在工程配置文件中需要给QT添加widgets模块这在我们前两章有说明他的父类继承于QAbstractButton。原创 2022-08-19 17:14:16 · 565 阅读 · 0 评论 -
【零基础学QT】第二章 工程文件内容分析
ui(new Ui::Widget)开始说到了我们访问ui文件都要通过这个指针,刚刚生成的ui_widget文件中的类也就new到这里来了,然后构造函数中我们调用了设置界面的成员函数,到这里QT程序就运行起来了,既然ui类是new出来的所以我们的析构函数中也进行了释放;一个命名控件包含了一个类widget,这个类不是我们文件下面的类,而是我们的ui文件类用于描述控件;创建我们的主类在该类中我们实现了需要的功能,当我们创建一个GUI控件的时候默认状态是不显示的,这里我们需要主动调用show显示;......原创 2022-08-18 17:56:19 · 363 阅读 · 0 评论 -
【零基础学QT】第一章 QT安装与工程创建
在学习本专栏课程需要掌握基本的C++开发能力,如有JS语言能力更佳,后续的QML文章需要使用到一些JS语句。本专栏的文章主要偏向于嵌入式方向,本人也是从事嵌入式物联网方向的嵌入式软件工程师,所以后续的学习可能会用到一些单片机、ARM开发板、串口模块、网口模块等嵌入式常用工具,结合实际开发所需的功能模块进行学习开发,直接运用到项目开发中去。电脑环境配置: 处理器采用:11th Gen Intel® Core™ i7-11700 @ 2.50GHz 2.50 GHz。............原创 2022-08-18 15:14:43 · 697 阅读 · 0 评论