自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

森G

资源整合

  • 博客(118)
  • 收藏
  • 关注

原创 28、视图基类 QAbstractItemView---------Model/View模型视图

视图类是控制数据显示的,同样有一个纯虚类QAbstractitemView, 它的方法大家只做理解即可,不用死记硬背,后面我们会根据具体的子类和案例带着大家学会这些操作。●设置和返回模型void setModel(QAbstractItemModel *model) //设置数据模型QAbstractItemModel *model() //返回关联的数据模型对象指针获取选中的模型设置代理// 设置代理// 为某一列设置代理// 为某一行设置代理设置属性和获取属性。

2026-03-26 14:17:09 37

原创 27、模型基类QAbstractItemModel---------Model/View模型视图

QAbstractItemModel 作为模型基类,很多函数是纯虚函数,这里只做函数功能列举,大家只做眼熟即可。●返回行数,列数插入和删除多行或者多列移动行或者列数据排序//函数 sort()将数据按某一列排序,可指定排序方式,默认是升序方式。

2026-03-26 14:12:36 14

原创 26、模型视图三要素---------Model/View模型视图

这种模式使得开发者可以灵活地处理数据的显示和编辑,同时保持代码的整洁性和可维护性。在部分企业的数据和展示管理中采用的是模型视图的方式,Model-View-Delegate这种方式可以实现一个模型对应多个展示界面的效果。当模型为列表或表格结构时,使用行号、列号访问数据比较直观,所有项的父项就是顶层项,对于树状模型就比较复杂,获取B的索引为。其中,index 是项的模型索引,value 是需要设置的数据,role 是设置数据的角色。模型内部存储的是item,我们叫做项,从模型中获取项,可以采用索引的方式。

2026-03-26 14:08:53 301

原创 25、QTreeWidget---------常见界面组件类

在Qt C++中,QTreeWidget是一个非常强大的类,用于显示和操作树形结构的数据。它继承自QAbstractItemView,并提供了丰富的接口来管理树中的项(QTreeWidgetItem)。首先,确保你的Qt项目中包含了QTreeWidget相关的头文件。在你的窗口或对话框类中,你可以通过成员变量或局部变量来创建。这个方法会移除并返回指定索引的顶级项,索引从0开始。如果你想要删除一个项的子项,你需要先获取到该父项,然后使用。上的项,而不是其他项的子项),你可以使用。方法来展开或折叠树中的项。

2026-03-26 14:00:36 342

原创 CMake五、动态链接库单CMakeLists.txt版

【代码】CMake五、动态链接库单CMakeLists.txt版。

2026-03-18 21:08:59 18

原创 CMake四、动态链接库多CMakeLists.txt版

【代码】CMake四、动态链接库多CMakeLists.txt版。

2026-03-18 21:05:20 17

原创 CMake三、静态库的多文件编译

【代码】CMake三、静态库的多文件编译。

2026-03-18 10:42:43 23

原创 24、QTableWidget---------常见界面组件类

QTableWidget中必须有item,点击这个item才会发出itemClicked信号,如果是空的表格是不会发出这个信号的。当前项是当前选中的列表项,通过视觉效果显示出来,用户可通过键盘或者鼠标与当前项交互, 比如当前项时第一行第一列。默认情况下,插入的列名字为其所在的列序号,如果想改为我们自定义的名字可调用。构造函数中,响应某个item被点击,只有在表格中有数据的时候点击才会触发。第一个参数为要修改的头部的哪一列,第二个参数为用item替换这个头部的列。行的操作和列类似,这里我们列举下行的用法。

2026-03-17 19:01:01 408

原创 23、QListWidget---------常见界面组件类

你可以自定义的外观和行为。

2026-03-17 18:42:44 172

原创 CMake二、带文件多文件编译

对CMakeLists.txt做修改。

2026-03-17 10:35:32 68

原创 CMake一、main.cpp文件编译

【代码】CMake一、main.cpp文件编译。

2026-03-17 09:51:09 20

原创 22、GUI控件类---------常见界面组件类

也可写代码创建,写代码创建的弹簧是不分垂直还是水平的,取决于将弹簧添加到什么布局里,将弹簧加到水平布局里就是水平弹簧,将弹簧加到垂直布局里就是垂直布局。运行起来,仍有部分控件散乱排布,是因为我们没有将控件加入布局,直接添加到mainwindow导致的,接下来我们用代码的方式将这些控件加入布局.是 Qt 框架中的一个小部件类,用于显示任务进度的图形化表示。假设水平布局中有两个控件A和B,A的拉伸比例为2,B的拉伸比例为1,那么当界面被水平拉伸时,控件A宽度的增长速度是B的2倍。

2026-03-16 21:35:08 309

原创 21、信号和槽详解---------QT基础

因为paramSlot的参数比paramSignal的参数少,但是槽函数的参数类型和信号的前几个参数类型顺序一致,所以可以连接。槽函数的声明放在slots关键字下面,但是槽函数有权限控制,有的槽函数是公有的,有的是私有的,有的是受保护的。关于访问控制,私有的槽函数只能在其所属的类中连接,比如privateSlot只能在ClassA的函数中连接。信号的定义包括 信号的返回类型,一般都是void,信号的名字,以及信号携带的参数。在 Qt 中,信号和槽的连接方式有几种不同的模式,分别是默认模式(

2026-03-16 20:46:27 306

原创 20、元对象系统---------QT基础

使用Q_PROPERTY宏定义属性:我们在MyObject类的声明中添加属性定义定义了myProperty属性,为int类型成员变量定义了myPropery属性 ,为READ函数类型定义了setPropery属性, 为WRITE函数类型定义了myPropertyChanged属性, 为NOTIFY类型,也就是信号类型接下来定义这些函数和成员, 函数名字需要和Q_PROPERTY中定义的一样Q_OBJECTpublic://读函数,返回成员m_myPropery的值。

2026-03-16 20:36:42 349

原创 19、QTimer类(待补充)---------QT基础

它允许应用程序在事件循环中安排定时事件,当定时器达到设定的时间间隔后,会触发 timeout() 信号。请注意,使用这些函数会阻塞当前线程,因此在 GUI 应用程序中使用时要小心,因为它们会导致界面无响应。单次定时器在指定的时间间隔后只触发一次,适用于需要延迟执行某个操作的场景。周期性定时器会在每个时间间隔到达时连续触发,适用于需要定期执行的任务。●集成事件循环:与 Qt 的事件循环紧密集成,保证定时操作的可靠性。●周期性执行:设置一个时间间隔,定时器每隔该间隔触发一次。在 Qt 中,可以使用。

2026-03-16 20:29:10 205

原创 18、QFile类---------QT基础

我们在打开文件之前,需要用QFile先指定一个文件//用QFile绑定一个文件。

2026-03-14 20:45:23 319

原创 17、QString类---------QT基础

End",将字符串Begin和End中间的字符串按照空格切割,统计并打印出现的单词个数。它提供了丰富的功能来创建、操作和处理字符串。QString可以根据指定下标返回字符, 返回的是QChar类型,QChar和C++的char用法没有太大区别。可通过split切割字符串,split传入字符串,将按照传入的字符串进行切割,返回一个QStringList。另外QString也提供了append的方式,将要追加的字符串添加到QString后面。字符串可以通过arg操作将参数填充到样式字符串并返回一个新的字符串。

2026-03-14 20:34:30 39

原创 16、QVariant万能类型---------QT基础

可通过QVariant的成员函数setValue将一个自定义类型的值设置到QVariant类型的变量里,如果这个类型不支持QVariant存储,则会产生编译错误示例我们用QVariant存储Qt的Qpoint对象,QPoint是Qt提供的2D点数据类型。如果我们存储自己定义的类Student对象,会编译失败, 我们先演示这个错误并带着大家解决先定义Student类public:Student();int _num;实现构造函数//无参构造//有参构造。

2026-03-14 20:28:34 400

原创 15、QT的容器类---------QT基础

例如,我们在QMap中插入一条数据<"LiLei", 23>, 先查找key为“LiLei”的数据,是可以找到的,如果查找key为“HanMeiMei”,是无法找到的,find的返回值为一个无效的迭代器,指向map的end。例如数列为 7,2,4,那么入栈顺序为7,2,打印栈顶元素为2,并弹出2,接着4入栈,打印栈顶元素为4,并弹出4,打印栈顶元素为7,并弹出7.将一个数字序列{6,7,2,1,3,5,8,0,9}中的数字依次入队,全部入队后,依次出队,打印四次出队后的队列信息。

2026-03-14 20:18:37 444

原创 14、QT项目构成

QT项目基本构成有哪些项目名称:HelloWorld项目配置文件:pro头文件列表:Headers源文件列表:SourcesUI文件列表:Forms资源列表:ResourcesQT Assistant有什么作用?(查文档)

2026-03-12 21:27:08 237

原创 13、移植Opencv----------Opencv移植Arm

同时将之前编译好的arm程序以及resources下的资源文件拷贝到开发板,放到同一级。移植opencv,将/opt/arm-sysroot拷贝到开发板根目录。之前已经将编译好的qt arm版本拷贝到开发板的根目录上。并且添加库配置,vim /etc/profile。

2026-03-11 08:59:34 21

原创 12、编译QT Opencv项目----------Opencv移植Arm

因为我们使用的QT项目中包含Opencv,所以要修改pro文件,连接opencv库。项目的人脸训练数据放在resources目录下。文件夹, 用qmake生成makefile文件。编译QT Opencv项目。

2026-03-09 14:43:51 90

原创 11、交叉编译Opencv----------Opencv移植Arm

opencv的交叉编译工具链在…如果编译ffmpeg显示No, 则用如下命令试试。不使用opencv_contrib版本。OpenCv移植arm。

2026-03-09 14:40:12 201

原创 10、交叉编译ffmpeg----------Opencv移植Arm

先克隆OpenJPEG源码仓库或者取下载release版本。编译并安装OpenJPEG。创建交叉编译工具链文件。交叉编译ffmpeg。

2026-03-09 14:36:30 90

原创 9、交叉编译xvidcore----------Opencv移植Arm

确保您的交叉编译工具链正确安装,并设置了必要的环境变量。确保您的交叉编译工具链正确安装,并设置了必要的环境变量。在/home/ubuntu目录里下载源码。交叉编译xvidcore。

2026-03-09 14:32:43 72

原创 8、交叉编译x264----------Opencv移植Arm

在开始编译之前,设置必要的环境变量,以确保 x264 使用正确的编译器和标志。移除无效选项,并正确设置编译器标志。1. 设置交叉编译环境变量。

2026-03-09 14:29:38 85

原创 qt4-6无边框窗口推拽拉抻类的封装

【代码】qt4-6无边框窗口推拽拉抻类的封装。

2026-03-05 19:08:49 37

原创 qt5实现雷达图

【代码】qt5实现雷达图。

2026-03-05 18:32:11 29

原创 qt5.14.2实现拖拽拉抻

【代码】qt5.14.2实现拖拽拉抻。

2026-03-03 21:24:33 59

原创 串口助手Qt实现MySerialToolPlus

【代码】串口助手Qt实现MySerialToolPlus。

2026-03-03 20:20:15 44

原创 串口助手Qt实现MySerialTool

本程序取自黄强老师的代码。

2026-03-03 19:41:13 39

原创 7、Ubuntu使用opencv-------Ubuntu安装使用opencv(扩展)

运行代码后可看到摄像头采集人脸信息。新建项目后将pro改为。

2026-02-27 22:55:57 50

原创 6、Qt程序运行----移植Qt程序到ARM平台(扩展)

我们将虚拟机中的ClockTop文件复制到我们的开发板中,可以使用U盘或者其他工具。复制到泰山派的文件就是图片中框起来。复制完成后,我们就可以直接在。直接运行Qt程序了。

2026-02-27 22:51:48 40

原创 5、移植Qt库----移植Qt程序到ARM平台(扩展)

我们接下来要将qt5.12.10-arm这个文件夹复制到开发板上面,Qt程序需要这些库才可以运行!如果交叉编译Qt库一直失败,那么可以直接在百度网盘链接中下载我们已经交叉编译成功之后的Qt5.12.10的库提取码:qcxx->->->在/opt目录下输入命令:将qt5.12.10-arm文件夹压缩为qt5.12.10.tar.gz文件然后将qt5.12.10.tar.gz这个文件转移到开发板的/opt目录下,这个可以使用U盘或者是其他传输工具。这里就不演示了。

2026-02-27 22:50:21 345

原创 4、编译Qt项目文件----移植Qt程序到ARM平台(扩展)

qmake 的绝对路径,如果更改了qmake的地址需要自己改成实际的绝对地址。接下来将项目文件复制到虚拟机中,进行交叉编译,任意位置都可。图片中为例:我们要复制到开发板上面运行的就是。注意:这里是那个交叉编译的Qt库安装目录(

2026-02-27 22:46:49 94

原创 i2c基于gd32f407vet6的例程代码的补充

是的,I2C从机完全可以实现像EEPROM那样的双向通信功能,包括被动接收数据、主动向主机回数据,以及在收到数据后立即回数据。地址空间 | 固定(如24C02为256字节)| 可自定义。I2C从机完全可以实现像EEPROM那样的双向通信功能,- 命令处理状态 :根据接收到的命令执行相应操作。- 地址匹配中断 :处理主机发送的地址和读写命令。- 接收缓冲区非空中断 :接收主机发送的数据。- 地址匹配状态 :检测主机发送的地址。- 数据接收状态 :接收主机发送的数据。

2026-02-27 19:12:57 312

原创 3、Linux环境安装(扩展内容)

构建套件可以看到一个是自动检测的(auto-detected),一个是手动添加的,手动添加的(zackgcc)将下载好的 qt-opensource-linux-x64-5.12.4.run 拖放到Home目录。通过网盘分享的文件:qt-opensource-linux-x64-5.12.4.run。装完之后,敲下:/usr/bin/qtceator即可启动,这时连图标桌面也会生成。可选择qt-opensource-linux-x64-5.12.4.run版本,然后我们运行程序,就可以看到弹出QT界面了。

2026-02-26 18:25:09 565

原创 2、Windows环境安装

QT的安装分为Windows和Linux, 这两种我们都会介绍,为了快速开发和调试,我们先介绍如何在Windows环境安装编译,关于Linux安装,以及Arm版本的程序发布流程会放在之后的章节介绍。这样下载的是最新版本的,现在是QT6以上的版本,而我们为了版本统一,对标企业(很多企业追求稳定性选择QT5),所以选择QT 5.12.4版本作为学习。因为无论qt的离线安装还是在线安装,安装程序都需要执行qt账号认证,所以大家要去qt官网注册一个账号。QT对5.15以及以上版本已经停止提供离线安装包,

2026-02-26 18:17:54 329

原创 1、QT简介

不用关注基础功能的实现细节,超丰富的类库代码跨平台, 一次编码,任意部署性能优秀, QT对于图像绘制,网络通信等基础服务做了很大提升以下是我基于QT开发的医疗血液分析界面每个图显示28W个点,为了解决实时计算,拖动编辑,以及大量点的绘制等痛点,开发中经过详细调研,最终决定选型QT作为开发框架进行产品设计关于QT安装,Linux 环境安装和 将来移植到Arm环境的安装所选择的安装源并不相同。

2026-02-26 18:10:09 27

原创 STM32F407VGTx的标准库USATRT1代码

USART1.c元宝加注释版。

2026-02-23 18:09:42 19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除