
Qt相关
文章平均质量分 60
韭菜钟
这个人很懒,懒得写简介
展开
-
使用zbar解码一维码
后来尝试了一下zbar,发现可以解码。之前都是直接用zxing来解码一维码的,但是今天遇到了一个看起来很清晰的一维码,但是zxing死活解码不了的情况。我们选用mchehab/zbar,但是不是直接下载它的源码来编译,因为会很麻烦。我的电脑编译了一个小时,不过时间主要是花在编译其依赖的第三方库。这个zbar的原始作者已经在2012年停止维护了,但是有个项目继承了,在此处。但是有个问题,不知道为啥,识别不出二维码。编译好后,在pro文件中引入头文件和库文件,就可以顺利使用了。,貌似持续做了不少更新。原创 2025-04-03 13:50:59 · 235 阅读 · 0 评论 -
在Qt中判断输入的js脚本是否只包含函数
目前在使用QtScriptEngine,在利用evaluate注册子函数时,要求用户输入的js文件中的内容仅仅是函数,函数体外,不能出现一些变量的声明、函数的调用等其他代码。原创 2025-03-29 11:39:19 · 327 阅读 · 0 评论 -
Qt程序基于共享内存读写CodeSys的变量
但是,在实际的项目中,要到使用到的结构体往往是多种类型的结构体互相嵌套的结果。假如我们和PLC的通讯只是简单的一个结构体,结构体中都是一些POD(Plain Old Data),那可以直接和PLC程序编写人员协商沟通好,让他把结构的定义代码发给你,你再根据ST代码写出结构体的C++代码。要想将Application的结构体数据直接导出,貌似是不行的,但是可以先把结构体数据复制到一个Library工程,然后导出m4文件,最后利用python脚本翻译(处理)成我们需要的代码。原创 2025-03-15 14:37:05 · 924 阅读 · 0 评论 -
基于RTTR在C++中实现结构体数据的多层级动态读写
如此一来,在c++中,使用字符串来定位+读写结构体成员数据的操作就实现了。这个只是基础,如何发挥它真正强大威力,等下一篇再介绍了。预告一下,主要是用共享内存来实现进程间读写PLC变量的。参考【C++笔记-RTTR编译&安装&简单使用】原创 2025-03-14 14:00:28 · 843 阅读 · 0 评论 -
利用Qt5.15.2编写Android程序时遇到的问题及解决方法
目前我用的是Qt5.15.2来编写Qt程序,环境的配置看我这篇文章。原创 2025-01-22 17:17:54 · 717 阅读 · 0 评论 -
在QML中访问野指针属性导致程序崩溃
最近在对之前写的一个软件进行重构,重构完之后,给到现场去用。现场反馈说,软件操作操作着,就崩溃了。这些全是qml里面的东西,又不给从c++到qml的调用堆栈,哪怕只是qml代码的调用堆栈也好。不知道怎么定位好了。原创 2024-10-22 13:55:12 · 499 阅读 · 0 评论 -
使用纯代码加载glb/gltf文件,然后使用Qt3D来渲染
在,我们已经实现了使用Assimp来读取模型,然后放到Qt3D中渲染。但是有时候,Assimp库的编译太麻烦:我们有时会发布程序到手机、或者嵌入式板子上,编译一个可以在这些设备上使用的Assimp库工作量太大。有没有办法,直接把某个库的代码包含进我们的工程,不依赖任何其他第三方库(或者依赖的库也是纯代码的形式包含进来),直接编译就行了呢?这样,我们就不用为各个平台都编译第三方库了。原创 2024-09-20 16:07:58 · 1631 阅读 · 0 评论 -
使用Assimp加载glb/gltf文件,然后使用Qt3D来渲染
ModelLoader.hModelLoader.cpp参考【How can I load a QPaintedTextureImage into a QTextureMaterial?】原创 2024-09-18 10:13:46 · 994 阅读 · 0 评论 -
Qt中使用DAG(有向无环图)
后来要求工具之间能存在依赖关系,也就是A工具的输出可以作为B工具的输入,这样就很麻烦了,谁知道用户会怎么勾搭各个工具的输入和输出?之前做的一个视觉检测项目,本来各个视觉检测工具之间是独立的,单独执行图像输入、得出结果,然后综合汇总结果,简单明了。这个库是实现了有向无环图的表示,但是在添加子对象时,没有检查添加子对象后会不会造成环型;结果发现,这个工具与工具之间得依赖、拓扑关系,是一个著名的概念:有向无环图(DAG)。,但是这个库貌似是依赖boost,有点大。ok,既然找到资料的切入点,那就好办了。原创 2024-09-06 16:31:38 · 573 阅读 · 2 评论 -
QtWebEngineView加载本地网页
直接加载放在exe同级目录下的资源是不行的,需要把资源通过qrc放到exe里面,然后通过类似。运行网页中包含的脚本,还可以取得返回值。这样的路径加载才行。原创 2024-08-23 15:19:30 · 714 阅读 · 0 评论 -
如何对open62541.h/open62541.c的UA_Client进行状态(在线/掉线)监控
可以发现,我们可以对UA_ClientConfig中的stateCallback进行赋值,也就是注册一个状态回调函数,从而获取客户端的状态变化。上位机这边会定时对PLC的某个opcua变量进行写操作。目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。这个opcua库对多线程的处理比较差,很容易造成冲突。有没有什么办法可以监控client的状态,了解其是什么时候掉线,掉线了我就不写就行了。幸亏,是有这么一个回调函数的,参考官方的例子。原创 2024-08-12 15:05:14 · 854 阅读 · 1 评论 -
使用Qt3D绘制机械手场景
之前是使用Coin3D来绘制机械手场景的【Qt利用Coin3D(OpenInventor)进行3d绘图】。后来需要在HarmonyOS显示这个机械手模型,但是想要编译Coin3D到HarmonyOS的话,显然太难了。然后尝试使用OpenGL原生的函数来绘制,但是HarmonyOS对很多函数都不支持,一查,发现HarmonyOS支持OpenglES。那就麻烦了。最后,一番兜兜转转,还是用回Qt3D吧。原创 2024-07-31 14:41:32 · 755 阅读 · 0 评论 -
利用git将Qt代码托管到U盘或者网盘
我们在开发项目时,随着项目需求的增加以及bug的修复,肯定会涉及到版本管理的问题。由于git的使用具有一定的门槛,之前我都没怎么用。基本没有怎么进行版本管理,而是周期地(比如每天)把代码压缩打包备份一下,然后将他们放到网盘中,如下图所示:但是这样没办法迅速、明确地知道自己两个不同的备份之间有那些不同,尤其是想回退到某个特定的版本时,简直就是噩梦。而git就能很好地进行版本管理。说到git,肯定就有人想到github了。但是有一些代码是不方便外传的;又或者出于谨慎,只想把代码备份到U盘的;原创 2024-07-05 17:06:35 · 971 阅读 · 0 评论 -
Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法
只要把这个头文件放在QtHttpServer的后面就可以了。经过一番排查,发现了问题。是open62541.h的问题。后面我知道了,再更新上来。我记得之前我用得好好的啊。原创 2024-07-03 14:03:13 · 603 阅读 · 0 评论 -
Qt利用Coin3D(OpenInventor)进行3d绘图
首先,到官网下载我是Qt5.15.2+vs2019的,因此我选择这个coin-4.0.2-msvc17-x64.zip到官网下载Coin3D在Qt中的封装库我是Qt5.15.2+vs2019的,因此我选择这个quarter-1.2.1-Qt5.15-msvc17-x64.zip将这两个压缩包放在在同一个文件夹中,先解压coin-4.0.2-msvc17-x64.zip,然后再解压。原创 2024-06-19 15:42:51 · 1620 阅读 · 0 评论 -
在Qt编写的exe或者dll中设置版本号
在别人编写的exe或者动态库中,通过右键–》属性–》详细信息中,通常都有版本信息:那我们自己编译出来的Qt程序,如何设置这些版本号呢?原创 2024-06-17 14:17:28 · 1755 阅读 · 0 评论 -
Qt使用OPCUA
但是在Qt6之前,假如想使用这个库,还得自己编译,比较繁琐。假如想开箱即用,而且没有使用太复杂的功能的话,其实可以直接使用open62541.h、open62541.c这两个文件。假如想在Qt下使用OPCUA通讯,貌似大家都是倾向于使用。然后就可以参考官方的例程来进行开发了。原创 2024-04-28 14:40:09 · 1774 阅读 · 0 评论 -
Linux下Qt生成程序崩溃文件
Linux下程序的崩溃文件生成相对于Windows下还方便一点(Windows下还得自己保存dmp文件),可能各有千秋吧。暂时还没试过在A电脑编译程序,然后放到B电脑运行产生core文件,然后再拿回A电脑进行代码定位。有空的话得测试一下。【Linux生成core文件相关配置,core文件调试示例】【【问题记录】Ubuntu 22.04 环境下,程序报:段错误(核心已转储)怎么使用 core 文件和GDB调试器 解决?原创 2024-04-03 15:26:25 · 1711 阅读 · 0 评论 -
在Qt中解决opencv的putText函数无法绘制中文的一种解决方法
查了一些资料,说想要解决这个问题,需要用到freetype库或者用opencv5(详情请查看文末的参考资料)。那我Qt也是第三方库啊,还倒不如直接用Qt实现呢。于是,我实现了一个myPutText函数。原创 2023-11-02 11:24:25 · 1694 阅读 · 4 评论 -
Qt的WebEngineView加载网页时出现Error: WebGL is not supported
当我在qml中使用WebEngineView加载一个网页时,出现以下错误:其实这个问题在Qt的帮助文档中已经提及了解决办法:因此,可以按照下面的步骤操作一下:在项目的pro文件中,引入模块2.2.在main.cpp文件include相应头文件,然后执行手册中提到的三行代码:原创 2023-10-06 09:19:44 · 1836 阅读 · 1 评论 -
在qml中将一个16进制表示的颜色加上透明度
在qml中,我们在指定控件的颜色时,可以直接通过16进制的字符串来表示,比如"#ff0000";这里提供一个函数,直接输入基础颜色以及其透明百分比,就可以返回对应的颜色。但是假如要在此颜色的基础上,加个透明度的话,就要重新计算一番,比较麻烦。这种方式也比较符合UI设计人员的使用习惯。原创 2023-09-15 14:01:54 · 419 阅读 · 0 评论 -
Linux下QtCreator勾选Use root user后出现error while loading shared libraries的问题
在linux下调试程序时,有时候需要取得root权限才能连接操作某些设备。之前我是通过脚本方式来进行的。但是这样有个问题,无法断点调试,出了问题,不好找问题发生的地方。但是假如你不采用脚本的方式,而是启动它默认的可执行程序+勾选Run as root user的话,它会出现error while loading shared libraries的问题。哪怕你已经设置好环境变量LD_LIBRARY_PATH了。原创 2023-08-08 12:55:06 · 873 阅读 · 0 评论 -
Qt获取本机唯一码(UUID)
这里给出一个获取电脑的UUID的方式,可以运行在windows、linux下。它和系统的硬件相关,但是又不完全相关。在生成软件序列号时,常常需要想办法区分不同的机器,防止别人购买了一个激活码就到处可以用。但是假如利用cpu_id、mac地址等,又会遇到一些问题(相同、修改等等)。原创 2023-07-11 16:34:46 · 3639 阅读 · 4 评论 -
Qt5.15.2配置Android开发环境
现在(20230617)利用QtCreator来配置android开发环境还是挺方便的。基本三步搞定(不过你要先安装好Qt)。原创 2023-06-17 16:55:45 · 3266 阅读 · 11 评论 -
QtWebAssembly下使用iframe无法加载第三方网站的问题
但是你把编译出来的东西。原创 2023-04-26 15:16:08 · 410 阅读 · 6 评论 -
Ubuntu下打开QtCreator,环境变量(PATH、LD_LIBRARY_PATH等)与预期不一致的问题
在Ubuntu中,安装好Qt之后,可以在系统桌面的左下角找到启动图标但是,这种方式启动的QtCreator所读取到的环境变量和我们从命令行读取到的不一致:可以看到,明显少了这个:/opt/ros/humble/bin因为这个原因,导致我在用cmake编译时一直出问题。原创 2023-04-20 17:01:45 · 2276 阅读 · 3 评论 -
ROS2中将octomap发布到Moveit中作为碰撞物体
这里假设你已经装好了ROS2以及Moveit2(都用二进制安装就行,不用从源码安转),没有安装好的,可以按照鱼香ROS的教程安装,两三行命令就搞定了。我的ROS2版本为humble,请根据你使用的实际版本替换。安装pcl安装octomap相关库下面这个也安装一下。原创 2023-04-08 18:21:10 · 3805 阅读 · 18 评论 -
用Qt编写STM32烧录软件(ISP模式)代码
之前写了一篇,但是在文中没有具体的实现代码。现在补上,各位有兴趣的同学可以参考以下。但是代码里面还有很多没有完善的,必定会存在一些bug,目前只是堪堪能用。假如要正式投入使用的话,自己一定要经过充分测试。原创 2023-04-06 16:36:36 · 2048 阅读 · 3 评论 -
尝试对MoveIt2的轨迹进行插值控制舵机机械手
机械手在运动时,要尽可能平稳、少冲击,显得丝滑。Moveit给到的轨迹,除了描述了各个关键时刻的各个关节的位置,还描述了此时的各个关节的速度、加速度。假如我们的执行机构可以完全按照这些位置、速度、加速度来进行操作,理论上就可以实现平滑的移动。但是由于我们目前用的是舵机,除了位置可控外,速度、加速度都不能直接控制。所以,只能通过插值来插补两个位置之间的各个小位置,让运动大概实现【加速-匀速-减速 】的过程。舵机的转动速度会因为负载的不同而不同,不能够简单认为是一个固定值。原创 2023-04-05 17:14:15 · 1274 阅读 · 15 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(3)
经过上面的操作,舵机就基本在我们的掌控之中了。下一步就可以通过串口建立电脑与stm32的通讯,从而实现电脑上发送相应的指令控制任意舵机的转动角度。原创 2023-03-24 11:24:45 · 3355 阅读 · 10 评论 -
用Qt编写dll时的多语言实现
一般我们在写一些大型的项目时,会将系统功能分为多个子功能模块进行实现。各个子功能可以单独由某个人来实现,然后将其导出为dll文件。主程序再导入这些dll,使用其功能。而有多语言要求时,子模块的负责人除了提供dll外,还可以提供其模块对应的ts/qm翻译文件,以供主程序进行多语言切换处理。原创 2023-04-03 13:25:41 · 861 阅读 · 0 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(5)
该机械手在执行MoveIt规划的路径时,会一卡一卡的,主要是因为两方面的原因:1.机械结构松散、2.执行路径时没有进行插补。主要原因是插补、反馈问题,后面再慢慢完善了。总之,暂时告一段落了。原创 2023-04-02 11:10:32 · 3246 阅读 · 7 评论 -
在Qt中调用MoveIt时出现Ogre::xxx错误
经过查找,发现是ros2里面的moveit_visual_tools,和moveit源码编译的moveit_visual_tools冲突了。可能是我什么时候安装了二进制的moveIt。然后再设置库的路径。原创 2023-02-06 16:52:49 · 361 阅读 · 0 评论 -
在QtCreator中先执行自定义命令再执行程序
先建立一个类似这样的脚本放在可执行文件所在文件夹下(具体内容要根据实际情况来定):run.sh# 2.改变run.sh的权限。原创 2023-02-06 15:20:09 · 813 阅读 · 0 评论 -
Qt项目包含多个qrc资源文件,导致资源无法被读取的问题的解决
经过排查、测试,最后发现,需要将不同项目、子项目的资源文件的名字改成不一样才行,不能都用resource.qrc这个名字。比如可以改成这样:主项目的资源文件改成mainResource.qrc、子项目A的的资源文件改成aResource.qrc等等。但是在debug模式下,会提示找不到某些qml文件。在主项目的pro文件中,有一个resource.qrc文件,该文件里面包含了许多qml、图片等其他资源。在pro文件中,通过pri文件引入了子项目,子项目中又有自己的resource.qrc文件。原创 2022-12-23 17:25:50 · 1211 阅读 · 1 评论 -
Qt关键字(signal、slot等)与第三方库中的函数、变量冲突的解决办法
然后在编译的时候,报错说什么语法错误。大概看了一下主要是Qt将这个结构体的emit函数识别成Qt的信号发射关键字emit了。但是这样其他类中的emit、signal、slot又不能用了,要改成Q_EMIT之类的,严重影响使用体验。同事在Qt环境下开发,使用第三方库(好像是什么tbb的库)时,里面有这样的一个结构体。它里面提到了一个解决办法。一开始找到的解决办法是。原创 2022-12-12 09:36:10 · 1290 阅读 · 0 评论 -
Qt中自定义及控制qDebug的输出
在我们把自己的函数封装成库,然后给别人用时,别人很可能会看到我们库中使用qDebug()打印出来的信息。这些信息一方面会干扰别人自己的输出,另一方面也会暴露自己库的一些细节。但是有时候又的确需要这些信息。这里,我是自己实现了一个debug类,用法也是类似qDebug()那样。因此,最好有个开关来控制自己库的信息的打印。原创 2022-11-02 16:29:16 · 1086 阅读 · 7 评论 -
Qt将xls文件另存为xlsx
需要注意的是 QAxObject接收的是必须是文件的绝对路径,所以最好用 QFileInfo(xlsFile).absoluteFilePath() 处理一下。方式是通过 QAxObject 调用excel打开原来文件,然后另存为。原创 2022-11-01 09:33:43 · 720 阅读 · 0 评论 -
Qt的lambda槽函数的注意事项
Qt中的lambda槽函数使用时做好带context原创 2022-10-14 22:18:58 · 694 阅读 · 1 评论 -
openEuler(CentOS 7)下 /libQt5WebEngineCore.so: .dynsym local symbol at index 的解决
openEuler centos libQt5WebEngineCore.so: .dynsym local symbol at index原创 2022-09-22 13:56:26 · 2885 阅读 · 0 评论