自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 收藏
  • 关注

原创 50. QT/QML中创建多线程的方式汇总

第一种:在定义类时继承 QThread 这个类,然后重写父类的虚函数 run(),将子线程需要执行的业务代码放到 run() 函数当中即可。第二种:使用moveToThread()函数将需要在子线程中执行的函数类移动到子线程中,这也是官方推荐的方式,比较灵活。首先,在QtCreator中新建一个QtQuick项目,需要实现的大致功能就是,在QML界面上点击按钮之后,会触发CPP后端的一个for循环函数(模拟耗时操作),同时将循环的次数显示在QML界面上。首先,在main.qml文件中。

2024-04-12 17:17:51 152

原创 49. QT中的HTTP通信与JSON数据格式解析

在请求获取网页数据时需要用到QNetworkAccessManager的get()方法,该方法需要传递一个QUrl参数,当数据访问结束之后,会触发QNetworkAccessManager::finished信号,此时可以在对应绑定的槽函数中去处理获取到的网页数据,finished信号当中会默认传递过来一个QNetworkReply类型的参数,访问到的所有网页数据都保存在这个参数当中。拿到上面的数据之后就可以自行处理了,比如简单的更新到UI界面上等。其次:利用get()函数获取网页数据。

2024-04-03 14:42:08 272

原创 16. QML中的一些粒子特效

在使用unity开发游戏时,都会涉及到一些特效的开发。实际上在QML中也提供了一些可以做特效的控件,称之为粒子系统。本篇博客主要记录一些使用粒子做特效的方式。

2024-02-28 15:13:08 564

原创 15. QML中一些相关的图形效果汇总

本篇博客主要记录一些在QML中,对图片进行操作的一些控件。

2024-02-28 10:11:15 425

原创 14. QML使用Flipable实现卡片翻转效果

分别用于展现正面和反面的界面状态,在实际中可以对这两个属性进行单独样式的设计,这样就可以实现在一个控件上的正反面设计不同的效果,同时结合动画更改控件的翻转角度,即可交替展现控件的正反面。,这个控件提供了两个属性,一个是。在QML中提供了一个控件。flipable控件效果。

2024-02-27 15:00:21 485

原创 10. Linux系统中wifi适配器找不到的解决方案

在linux系统中开启一个热点,一般有两种方式。一种使用create_ap在命令行中进行创建,另一种就是在系统自带的操作界面中手动开启。当手动开启热点时,有时会遇到wifi适配器找不到的问题,本博客记录一种可解决此问题的参考方案之一。服务重启后,关机,重启整个linux系统即可解决问题。

2024-02-24 10:09:46 809 3

原创 17.自定义点击带波纹特效按钮

功能实现方式:在WaveButton.qml中使用动态创建组件的方式,创建WaveEffect.qml自定义控件,有关波纹的代码均在WaveEffect.qml中进行设计。此自定义按钮的大致效果为:当点击了按钮控件后,会在按钮中心生成一个类似波纹的特效并向四周扩散,同时按钮控件会有一个跳动的特效。

2024-02-06 13:21:56 345

原创 16. QML利用DropShadow自定义悬浮按钮

一般情况下,QML提供的按钮控件的外观效果比较单一,如果想要做出带有空间感的效果,需要自己定义组件实现。本篇博客记录两种效果的空间感按钮,主要借助阴影达到想要的效果。

2024-02-05 16:32:58 409

原创 12. openCV在QT环境中利用zBar开发库实现二维码内容识别

本篇博客仅记录如何使用zBar库进行二维码内容的识别,其中牵扯到的一些其它知识点,比如二维码区域检测、zBar库开发环境配置等可以参考本专栏的其它相关博客,此篇博客不再赘述。博客中代码功能:手动选择一张包含二维码的图片,会将检测到的二维码区域单独显示出来,并将二维码中包含的信息显示到一个button上。图像当作参数传入,进行信息提取,注意:使用。经过上述操作即可识别出二维码中的信息!是最终需要用来识别的二维码图像。检测时,待检测的图像必须转换为。

2024-01-23 18:00:15 438

原创 48.Qt for Android实用小技巧

但是,为Android项目配置了这个文件之后,一些关于Android的相关设置才能进行,因为这个文件相当于开发的Android程序的配置文件。开发的Android程序一般情况下是需要获得设备的某种权限的,不然很可能操作上会遇到问题,比如读写设备上的文件权限,蓝牙状态获取权限,wifi状态获取权限等。使用Qt开发的Android程序,当把编译的apk文件安装到设备上之后,默认显示的程序名称是在qt中创建项目时的项目名称,如果想让程序安装后有自己的名称,这时就需要单独设置了。的文件夹,这个文件夹是创建。

2024-01-11 17:27:12 197

原创 11. 在Opencv中利用仿射变换处理二维码变形问题

在前一篇博客中记录了如何在一张图片中单独提取出二维码区域,考虑一种情况:如果二维码图片拍摄时并非是正对着二维码拍摄的,那么整张图片相对来说就发生了一定的倾斜角度,最终截取到的二维码也是有一定的变形的。针对形状发生变化的二维码,如果想把它调整归正,可以使用仿射变换对图像就行矫正,某种程度上可以提高二维码最终的识别精度。

2024-01-09 11:04:30 766

原创 9. linux系统下在Qt中配置Zbar条形码/二维码扫描开发环境

虽然现阶段OpenCV的高版本也有提供二维码扫描的功能,但是其在速度和精准度方面都远低于Zbar,不过Zbar的精准识别是依赖于一张图片中二维码的区域要占用40%-100%的空间,这样标准的二维码对于Zbar的识别是非常精准的。而实际应用中,拍摄一张带有二维码的图像进行识别,往往这张图像会包含一些其他的额外信息,所以就需要对原始含有二维码的图像进行处理,只保留其中的二维码区域,而图像处理方面OpenCV是强项,所以可以将两者结合开发,功能实现精准扫描的功能需求。,本篇博客以此种方式进行配置。

2024-01-08 18:00:13 538

原创 10. Opencv检测并截取图中二维码

在二维码扫描功能开发中,使用相机扫描图片时,往往图片中的信息比较多样,可能会造成二维码检测失败的问题。:根据二维码的特征 --> 三个角点都有一个 “回” 字形图案,可以借助这三个 ‘‘回’’ 字形图案定位到二维码的具体位置,然后使用OpenCV中的 “抠图” 功能,根据坐标值把二维图从原图中抠出来。字形的大致位置,接下来就是要使用上面的处理结果图再次进行预处理,查找轮廓等方式,寻找包围这三个。本博客中先是检测得到所有的轮廓,然后在找到所有的父轮廓,根据父轮廓的索引号将。字形轮廓绘制出来,得到。

2023-12-28 15:21:17 851 1

原创 8.linux系统使用Qt开发Android配置opencv for android开发环境

在linux系统中使用qt开发android程序时,如果需要使用到opencv,是需要配置开发环境的。前面一篇文章记录了在linux中使用cmake工具配置opencv的方式,这种方式并不适合开发andrroid,在opencv的官网上有专门用于开发android的opencv包,下载之后按照本篇博客记录的方式即可实现环境配置。目前opencv的最新版本已经在4.X以上了,但是高版本的opencv在结合QT使用时会存在一些编译报错的问题,低版本的会更稳定一些。

2023-12-21 11:39:19 625

原创 3.基于对象的编程风格

基于对象:子类中包含一个父类的成员变量,同时子类中编写实际函数,并在子类构造函数内将实际函数以回调函数的形式注册到父类成员变量中。此博客记录如何以基于对象的方式进行编程,分别以旧的和最新的C++版本进行实现。面向对象:子类继承父类,实现父类提供的虚函数。

2023-12-08 14:38:31 91

原创 2.面向对象编程风格

此博客记录如何以面向对象的方式进行编程,以及如何让线程和线程对象同时销毁。

2023-12-07 13:14:30 422

原创 1. 使用poll或epoll创建echo服务器

【代码】1. 使用poll或epoll创建echo服务器。

2023-12-05 16:52:34 428

原创 47. QT Android针对Java代码常见接口类型的调用方式总结

可以很方便的对java代码进行调用,但是QT提供的这个类使用起来也并不是很简单,需要根据不同的java接口形式传入不同的参数,比如说在java中定义了一个无参无返回值的接口和一个无参有返回值的接口,又或者定义的还有带参带返回值的接口,不同的接口有不同的调用方式,本篇博客对常用的接口类型的调用方式进行了简单的归类,方便学习参考!先总结这些,后面有需要再追加…在QT中提供了一个接口。

2023-11-28 17:18:31 141

原创 46. Qt Android调用Java代码进行辅助开发 -- 框架搭建

在Qt中提供了调用Java代码的接口,比较方便。然后创建一个CPP文件用于辅助QML端调用java代码,本例创建的.cpp文件命名为javahandler.cpp,在QT中提供了一个接口。,注意从这个文件夹开始,文件夹的名称就是后面java代码的包名了,这个包名是要添加到java代码中的,比如java代码所在路径为。此时已经创建了一个java文件,还需要将这个文件的设定为启动时自动加载的默认文件,回到之前的android配置文件中,点击下图中。文件夹,多出了其它的一些文件,这些多余的文件是因为创建。

2023-11-22 14:23:37 159

原创 44. Adb调试QT开发的Android程序实用小技巧汇总

一般在QT程序中如果出现了BUG,都会尝试看一下某个变量值的状态,使用 console.log() 输出一些信息方便自己快速定位出错的原因。不像在linux或者windows系统中,可以利用QtCreator软件本身进行一些调试,安卓应用一旦在系统中安装后,如果运行中途出现什么BUG,定位问题所在很麻烦。关于android调试,在没有终端的情况下,也可以使用弹框的方式进行调试,就是自定义一个弹框显示的qml控件,把需要输出的调试信息显示到这个控件上,以弹框的形式显示出来。

2023-11-15 11:13:27 314 1

原创 9. linux系统设置开机自启动发射热点

某种情况下需要使用wifi进行通信时,可以在linux系统中发射一个热点让以使别的设备能够连接,然后进行通信。一般情况下可以在有无线wifi发射器的情况下,每次linux系统开机后,手动设置开启热点,但这种方式比较麻烦,可以通过命令脚本的形式在系统开机后自动开启热点,方便使用。上面命令行中:selfHot为热点名称,12345678为热点连接密码。此时打开其它的设备,即可搜索到热点 selfHot。以后开机后启动,linux系统即可自动创建热点了。创建开机自启动脚本,实现开机自动启动热点。

2023-10-31 17:19:04 751 1

原创 43. QT客户端中使用TCP进行高频率的发送消息导致服务端接收信息不完全问题

所遇场景:在嵌入式开发中,一般情况下客户端和服务端均在一个工控机系统内,此时两者的通信实现如果采用TCP的方式,通信频率的高低对于信息的接收影响不是很大,在QT中开发的客户端使用TCP发送的指令,在服务端能够完整的接收。**第三步:**将指令集进行分割,并取出第一条指令(不出意外,如果上一个指令集的最后一条指令是不完整的,那么这一次的指令集的第一条指令也是不完整的,两个不完整的指令组合在一起就是完整的指令),将第一条指令和上面缓冲对象保存的不完整指令进行拼接,组合成完整指令。

2023-10-30 11:09:26 372

原创 6. Python使用Asyncio开发TCP服务器简单案例

在Python中开发TCP/IP服务器有两种方式,一种使用Socket,需要在py文件中引入对应的socket包,这种方式只能执行单项任务;另一种方式使用Asyncio异步编程,可以一次创建多个服务器执行不同的任务。运行此脚本即可接受客户端的正常连接和信息传输。创建一个tcp服务器,并实现数据的接受和发送。

2023-10-10 17:14:25 967

原创 42. QT中开发Android配置QFtp功能时遇到的编译问题

此问题仅适用在QT中开发Android程序时,需要适用QFtp功能的情况。一般情况下,如果开发的是Windows或者Linux系统下的程序,可能不会出现该问题。将和QFtp相关的代码文件,单独放到一个文件夹中,命名必须是。然后再添加到工程项目中进行使用,即可解决上述的问题。文件是空文件,在android环境下无法正常编译。根据报错信息可以看到,是因为。

2023-10-10 14:15:56 213

原创 41. Linux系统配置FTP服务器并在QT中使用QFtp实现文件上传

经过上述步骤的操作,linux系统即可被有ftp功能的客户端连接到,实现不同系统的文件互传。此案例以在windows系统中开发的qt小程序为例,连接虚拟机中的linux系统,并添加文件上传功能。这篇博客主要记录一些在Linux系统中搭建FTP服务器时踩过的一些坑,以及在使用QFtp上传文件时需要注意的问题。在QT中使用开发ftp的功能,最直接的方式是把下载的。使用上述命令安装后,系统中会有一个默认的配置文件。直接添加引入到项目中,主要包括四个文件,分别为。案例部分介绍的比较精简,详细的可以看博文。

2023-09-20 16:30:20 610

原创 3. C++调试时显示代码所在文件 / 函数 / 行号信息

/ 使用的...符号是可变参函数传参的写法,可以使用__VA_ARGS__接收参数} // 使用的...符号是可变参函数传参的写法,可以使用__VA_ARGS__接收参数 # define selfTest(. . .) selfTest(__VA_ARGS__ , __FILE__ , __func__ , __LINE__) int main() {//上面进行宏定义后,此行代码相当于selfTest(3,8,__FILE__,__func__,__LINE__) }

2023-09-05 13:32:54 442

原创 40. QML中使用Settings类保存一些设置时的注意事项

软件开发中一些参数设置有时可以使用数据库来保存这些变量,但在QML中提供了一个Settings类,可以轻松实现一些简单数据的保存。它的实现原理是在指定文件夹内或者默认文件夹内创建一个**.ini**结尾的windows系统文件,为系统的初始化文件,在其中保存数据,软件启动时会首先在这个文件内调用相关参数变量进行使用。注意:在第一次设置属性时,一定要先考虑好属性的值,因为一旦设定,修改起来就比较麻烦比如在文件中写入下面的代码:软件运行后会发现在项目build文件夹下会生产一个配置文件,打开如下图所示:

2023-08-24 17:14:31 263

原创 15. Canvas制作汽车油耗仪表盘

的基础上进行一些更改,想查看全面的代码可以点击链接查看即可。

2023-08-22 10:18:18 1055

原创 14. 利用Canvas自制时钟组件

在绘制相关元素时有两种方式:一种时在同一个canvas中绘制所有的部件元素,这样需要不断的对画笔和画布的属性进行保存和恢复,容易混乱;另一种就是创建多个canvas组件,每一部分的元素绘制都在各自的画布进行绘制,逻辑比较清晰,但是canvas组件会相对较多,本文使用的是第二种方式。在自定义时钟组件时,使用到的基本控件主要是。

2023-08-21 14:08:54 165

原创 39. Linux系统下在Qt5.9.9中搭建Android开发环境

安装完成后会在当前安装目录内出现一个新的文件夹,依次进入目录**/Tools/QtCreator/bin/**,找到其中的qtcreator可执行文件,执行这个文件即可打开qt的开发工具。大致安装的步骤如下:①安装Qt5.9.9,②安装jdk,③安装ndk,④安装sdk,⑤在qt中配置前面安装的环境路径。qtcreator的运行,需要以超级用户的方式进行运行,否则sdk的路径可能无法访问。在上图中进行相关组件的选择,因为配置的是android的开发环境,所以上面。至此,sdk安装完毕!

2023-07-26 17:17:00 1096

原创 8. Vmvare中重新分配Linux系统的分区空间大小

上述操作结束后,虚拟机的相关内存表面上已经更改了,但实际上虚拟机内部并不知道自己的内存发生了变化,还需要开启当前虚拟机进行实际的空间分配。在打开的页面中鼠标左键拖动上卖弄磁盘条右侧的箭头来更改空间大小,更改后点击右下角的。打开虚拟机设置页面之后,在左侧页面先选择。然后选择其中的某一个分区,右键鼠标,选择。上述操作结束后,即可完成内存空间的更改。先关闭当前虚拟机,打开首页,点击。上述操作完成后,在左侧选择。选项,然后点击右侧的。

2023-07-25 11:39:21 1609

原创 7. QT环境下使用OPenCV(对图像本身的操作--二值化、混合、合并拼接)

混合是将两张尺寸大小一致的图像叠加在一起,只是每张图像的透明度会不一样,从而达到两张图像混合在一起的效果,注意两张图像混合在一起显示的前提是要保证两张图像的尺寸大小一致。此操作和混合图像不同,合并图像类似于拼接图像,可以将两张或者多张图像拼接到一起进行显示,最常见的就是多路监控系统同时显示在一张屏幕上,或者多宫格图像拼接等。

2023-07-18 10:25:30 261

原创 38. QT在工控机Linux系统上调试机器人注意事项

如果只是手动更改了文件夹的名称,而在QtCreator中的配置中没有更改路径名称,则在代码编译时QtCreator会因为找不到路径的原因,它会自定按照原来的路径重新创建新的文件夹进行保存,那么此时如果我们需要拿到编译后的可执行文件就需要去实际项目编译保存的路径去找,否则很容易出错导致自己想要的程序不是最新编译的。解决这个问题的终极方式就是在QtCreator编辑器中手动指定编译文件的保存路径,如下图所示,在下图的方框中指定编译文件的保存路径,每次编译完成后,此路径下的编译文件才是对应最新的结果。

2023-07-12 17:38:46 492

原创 6. git 从分支拉取代码到本地

在使用git拉取远程仓库时,一般情况下在本地文件夹中使用git绑定远程仓库后拉取代码默认是从主分支拉取的代码,但仓库中可能有多个分支,有时需要从子分支中拉取代码进行开发。上述命令执行后,即可在本地文件夹内看到子分支中的所有内容,且当前本地仓库也与远程仓库中的子分支进行了关联。添加后开始拉取子分支的代码,注意这里不要使用。

2023-07-07 11:50:48 2030

原创 6. QT环境下使用OPenCV(利用鼠标实现图像的ROI区域选择)

如果需要在一张图像上绘制多个矩形框,那么就需要时刻保存上一帧绘制过的带有矩形框的图像,需要添加一个新的全局变量rectedImage,并更改回调函数中的内容,添加一层判断,当第一次绘制后,给rectedImage进行赋值,如果rectedImage为空时就在原始图像上绘制,如果不为空,就在rectedImage图像上绘制。因为要在图像上实现鼠标框选的动作,那么必然需要记录鼠标左键按下和松开时的坐标,而且当矩形框绘制到图像上之后需要不停的刷新窗口上的图像帧(后面文章会讲到),所以需要在。

2023-07-06 16:23:01 1055

原创 37. QT中使用QFtp实现文件传输2 -- 远程服务器文件或文件夹下载到本地

网上很多关于使用QFtp这个类实现文件或者文件夹的远程服务器上传的案例,但很少有关于如何下载文件,下载整个文件夹的案例甚至更少,本篇文章中使用到的方法,在下载单个文件是比较简单的,而在下载整个文件夹时采用比较曲折的方式,原因在于ftp整个类如果依然采用递归的方式去获取远程服务器中文件夹中的信息,会造成QT中信号槽函数的多次连接,出现问题。当中,当这一步骤执行完毕后,需要去遍历这个容器,每获取一个文件夹路径,就要根据这个路径的文件夹相关信息在本地保存路径中创建相同名称的文件夹,然后创建新的临时辅助。

2023-07-03 16:51:26 945

原创 36. QT中使用QFtp实现文件传输1 -- 本地文件或文件夹上传到远程服务器

在对ftp的源码进行编译后,得到的文件中其实有很多功能函数提供给我们使用,为了对源代码结构进行保护,在自己项目中可以在源代码的基础上进行二次封装,创建自己的ftp功能类。本项目中创建了一个ftpUpload//上传单个文件 Q_INVOKABLE void upLoadSingleFile(QString localFilePath , QString remoteFilePath);

2023-07-03 14:22:57 1059 1

原创 5. QT环境下使用OPenCV(基于TCP实现摄像头图像数据的多线程传输)

在QT的多线程开发当中,有两种方式可以创建子线程,一种是继承QThread这个类,然后重新其run()函数,需要在子线程中执行的代码放置在run()函数内部,在启动线程时只需要调用其start()方法即可,但这种方式在结合tcp通信一起使用时容易出现错误,会报错说socket通信不在同一个线程内。另一种创建子线程的方式是将自定义的类继承自QObject,然后使用moveToThread()函数将其移动到创建的子线程管理器中,转移之后,此自定义类中的所有功能代码在运行时都会在子线程中进行。

2023-06-25 17:11:08 1712 1

原创 4. QT环境下使用OPenCV(视频或摄像头读取显示在QLabel控件上)

关于视频的读取,实际上也是从视频中将每一帧图像加载后,显示到QLabel控件上,每一帧的读取使用定时器进行控制,即在间隔时间内一帧一帧的去读取图像帧,如果不使用定时器进行操作,可能会出现问题。在用opencv处理图像时,图像的来源大部分情况下是从视频中读取过来的,视频可以是本地保存的视频,也可以是本地摄像头或者网络摄像头实时拍摄的视频。opencv读取视频。

2023-06-21 16:50:53 1521 1

原创 3. QT环境下使用OPenCV(Mat对象的常用操作--复制与克隆、创建空白图像、像素遍历与运算)

在原图像的基础上,使用**Scalar()**这个函数为原图像的每个像素值改变数据,本质上是遍历图像的每一个像素点,然后对每一个点的像素值添加Scalar中的值。可以先获取图像的宽度和高度,然后使用两层循环遍历获取每一个像素点的值,对其进行更改。一般情况下是使用OPenCV读取图像,但有时也会自己创建图像,此时需要使用。类似于创建一个小的矩阵,在图像做卷积操作时,可以利用这个方式创建一些卷积核。在创建全1或者全0图像矩阵后,可能需要对其中的数值重新赋值,此时可以使用。

2023-06-21 10:46:00 258

实现文件传输的辅助类ftp代码

实现文件传输的辅助类ftp代码

2023-07-03

unity2D游戏开发小案例

unity2D游戏开发小案例

2023-05-12

空空如也

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

TA关注的人

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