自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qthello

qthello

  • 博客(268)
  • 资源 (14)
  • 收藏
  • 关注

原创 如何将Qt pro工程文件 改成CMakeLists.txt

Qt pro工程管理文件,本人认为是很好用的,语法简洁易懂,但是只能在QtCreator中使用,想用使用其它IDE比如Clion或者vs,CMakeLists是种通用的选择,另外QtCreator的调试功能跟粑粑一样。C++ 中编译,无外乎代码本身的头文件,源文件。三方库的头文件,库文件。Qt本身自带了UI文件和qrc资源文件。CMake 无法像pro那样处理图标文件,需要先新建一个rc文件,rc文件中指明icon文件,然后加载rc文件。三,CMakeLists 文件。二,Qt pro文件。

2024-05-23 11:05:59 888

原创 利用pybullet 实现ur5 仿真

想做一个机械臂仿真软件,以前利用C++ 结合FCL和OSG实现了一个半成品,但是这种方案需要根据机械臂DH参数,解析出机械臂各关节位姿然后利用OSG渲染,并且需要自己实现逆解算法,过于麻烦了。pybullet 具备了上述所有的要素,动力学引擎使用bullet,渲染使用OpenGL,并可以直接加载URDF文件,而且提供了 正逆算法。,负责机器人模型的建模,描述各机器人的连杆和关节,还有质量属性,颜色等。4,设置各关节角度,并判单是否碰撞。3,利用逆解算法,求出各关节角度。1,利用URDF文件,加载模型。

2024-05-22 13:20:36 1248 1

原创 pyqt集成vtk框架

pyqt集成vtk框架。

2024-05-22 08:51:02 270

原创 Qt 在windows下显示中文

1,简单起见,在windows平台,如果只是windwos平台系统,直接将所有文件转成utf-8 带bom 格式,然后中文使用QStringLiteral(“中文”) 即可。某些 低于此版本的qt,上述方式会出现乱码的情况,此时需要将utf-8编码方式的文件转成utf-8 带bom。比如使用txt进行转换,但是。2,全部使用英文 如,tr(“en”),然后再去翻译文件中翻译。系统的某些版本 txt 不带此格式。格式,此环境下 中文没有问题。64位 win11系统。默认用Qt 创建的文件使用。

2024-05-21 10:04:11 776

原创 西门子 PLC snap7 使用

2. 把examples/cpp 下的 snap7.h 和cpp 加到工程里。5. 用Hsl工具测试下,这里再M100 位置 写入了一个byte ,值为1。集成snap7库,对西门子plc进行访问。3. 封装一个单例 来使用 这个库。4. 使用的时候 直接调用业务函数。

2024-05-16 14:10:59 320 1

原创 深视 线扫相机 获取点云数据

我这里使用阻塞方式获取数据。他们还提供了非阻塞也就是回调方式获取数据,但是我的代码在线程同步的时候经常崩溃,没找到原因。还有一种是无线循环获取数据,我这里也没跑通,出来的数据不对。2,并且文档不更新,我看了好久,按照文档开发,结果不行,技术说文档太旧了。3,文档里好多代码,特别度的魔数,突然出现一个数字,也不解释啥意思。最近项目上用到了深视的线扫相机,集成了三天才搞定,分享下代码。顺便吐槽一下,想用相机取图,这么简单的功能,搞得如此麻烦。1,文档有三份,就不能集成到一份么,维护起来也简单。

2024-05-12 09:54:05 301

原创 QML 本地存储(Setting,sqlite)

3,main.cpp 中 指定下数据库的保存路径,比如当前路径。不指定的话,会默认存到系统路径,不太好找。跟QWidget 中的QSettings 一样,可以简单的存储一些配置。main.cpp 中需要 定义 应用程序名称,公司名称,域名称。2,使用的时候 引入js 文件,之后直接调用接口就可以了。按钮移动时将x y 保存到Settings 中。下次加载页面时 从Settings 读取位置。可以存储一些复杂的数据。1,将数据库操作 单独封装成一个js文件。我们以一个按钮的位置为例,进行讲解。

2024-05-07 15:14:41 1061

原创 PyQt程序的打包

F表示生成单文件模式,即只有一个可执行文件,比如windows下的exe。-n表示指定输出文件名,例如-n app.exe。-i表示指定图标文件,例如-i icon.ico。-w表示生成窗口模式,即不显示控制台窗口。打包后的程序位于 dist文件下。记录下PyQt程序的打包。

2024-05-06 09:01:46 322

原创 PyQt 入门

Python体系下GUI框架也多了去了,PyQt算是比较受欢迎的一个。如果对Qt框架熟悉,那掌握这套框架是很简单的。使用designer工具创建ui文件。随便放几个控件,然后保存到工程目录下,取名为widget.ui。python下UI文件无法直接使用,需要使用这个工具转成py文件。2.Designer UI工具。3.UI文件转py文件工具。2.UI文件转py文件。3,主程序加载py文件。

2024-05-06 08:59:39 470 1

原创 QML model-view 框架

比如一个通讯录,可以用list展示,也可以用grid展示,这都属于view部分,可以不同。

2024-04-29 16:12:49 341

原创 windows下其它软件的自动打开与点击

项目要用到第三方软件,这个软件没有提供SDK,只提供了两个exe,每次开机后需要启动这两个exe,并且还要点击上边的两个按钮。这样的用户体验怎么能让人接受呢,如果查资料,发现windows提供了接口,可以自动化操作。窗体标题 或者句柄 可以使用 Spy++ 这个工具获取。

2024-04-29 08:57:32 206

原创 树莓派下开机自启的Qt程序配置

比如我们的程序在test文件夹内,内部含有完整的Qt应用程序及依赖库,我们在同级目录下创建一个安装脚本 install.sh。我们需要编写一个脚本用于安装qt打包后的程序,也就是整个文件夹。脚本的作用就是将文件夹拷贝到指定的位置。我们需要编写两个脚本,来启动和停止我们的应用。这里假设我们的应用名称为test。Qt开发的GUI程序,部署到树莓派中,并设置开机自启。1,制作启动脚本和停止脚本。

2024-04-29 08:56:16 482

原创 一篇文章 学会Qt 样式表(qss)

QML 中风格和主题的设计可以通过配置文件选择现有几种中的一种,或者直接在控件定义时,指定其属性,如背景颜色或者字体大小。在QWidget框架中,则通过了一种叫做qss样式表的东西来进行描述,跟CSS逻辑上类似。那这个谁,有好多种写法,比如所有按钮,某个按钮,按下的按钮。而这个样子又有好多,比如背景色,边框,圆角等。2,字体 一般是一个全局的设置,所以可以在此处设置全局字体。1,新建一个qss文件,并添加到资源里。然后在main函数中,进行全局的设置。3,我们以如下的窗口来举例说明。

2024-04-28 10:43:57 608

原创 QML实现 无边框 可移动 可缩放窗体

利用QML实现无边框窗体,要求可移动,可缩放。

2024-04-26 08:55:11 463

原创 QML中调用HTTP请求

涉及到Http请求,第一反应可能是使用Qt的QNetworkRequest和QNetworkReply实现,然后QML再与其交互,但是这样过于麻烦了。其实QML自己已经具备了http网络请求访问的功能。而且使用起来很方便。主要是利用XMLHttpRequest这个类,请求接口,然后将返回的数据解析成json对象(JSON.parse),之后就可以像js一样去拿json对象里的数据了,当然前提是接口返回得数据是json。我们这里举一个访问天气接口,然后解析其数据的例子。

2024-04-25 16:55:31 633

原创 利用FCL实现更加精准的碰撞检测

我们看如下这张图,碰撞的逻辑就是,在一个三维场景中,构造一个实体,比如下边的BoxA,然后在物理引擎比如bullet中,或者专用的碰撞检测库中也构造一个对应的实体,比如BoxB。之前用bullet做个尝试,基本的图形能满足需求,比如球,盒子,但是项目中涉及到点云的碰撞,而bullet中处理点云,没有找到好的处理方式。但是FCL可以将点云转变成fcl中对应的实体,因此最终选择了FCL进行碰撞检测,这里列出FCL中大概的步骤。因此我们在FCL中构造对应实体的时候,可以直接用三角面。1,FCL中构造实体。

2024-04-25 10:23:39 1457 4

原创 QML 中的状态

使用QWidget的思路去实现就是在按钮click对应的槽函数中,依次获取三个button的指针,然后改变其颜色,这样也能实现,但是不够优雅。QML的思路是,全局定义一组状态,然后每个状态来控制具体的属性,使用时只要切换不同状态就可以了,后续修改的话,只需要修改这个全局状态就行,并且三个按钮集中暴露在这组状态中。状态描述了当前用户界面样子,QML中一个状态定义了一组属性的改变,并且会在一定条件下被触发。//红灯状态 红灯亮 其它灭。//定义一组状态 规定每个状态下 的属性。//依次切换三个状态。

2024-04-25 09:00:32 625

原创 C#通过Qt使用VTK

一个项目,界面是C# 开发的,但是业务上有三维可视化的需求,VTK基于C#的绑定版本需要收费,并且资料很少。因此将VTK嵌入到Qt里,并封装成一个dll,通过接口提供给C#访问。2,exe路径下 需要把自己的dll ,Qt的dll 以及VTK的dll 全部放进去。1,首先看pro文件,主要是dll编译配置,和第三方库引用及VTK的依赖库。3,Widget 写法,可以参考这篇文章(),它可以将Qt的窗口给C#使用。1,引用dll 并调用接口。这里用到了一第三方库()或者看仓库上的源码。

2024-04-24 07:02:49 800

原创 QML 不同风格和主题的切换

Quick程序提供了方便的用于切换不同风格和主题的配置文件,如果没有设计稿,又想界面没那么丑,那么可以用这套配置,让应用看起来相对专业一点。3. backbround,color类型,表示背景色,默认由主题指定(light或者dark)一种受到 macOS 的设计风格启发的风格,它提供了类似 macOS 风格的外观和交互体验。4. elevation,int类型,表示海拔高度,值越大,阴影越深,该值与具体控件相关。6. theme,枚举类型,表示主题,默认是Light,也可修改为Dark。

2024-04-24 07:01:57 911

原创 Qt 集成VTK

Qt的debug模式需要加载VTK的debug库,同样 release模式需要加载release库。不然会出现这个错误“QWidget: Must construct a QApplication before a QWidget”。4. 我们以显示一个stl文件为例。

2024-04-23 09:10:41 766

原创 windows下利用NSIS制作安装包

经过程序员抓耳挠腮的开发,应用终于开发完毕了,那接下来无论发布给客户还是给测试,最好的方式时打一个安装包,直接给release文件夹,就显得不太专业了。1,我们以一个QML程序为例,新建一个pkg/v1.0.0/bin文件夹,并将 release版本的pkgTest.exe拷贝到这个bin文件夹下。选择目录这一步很关键,把自带的两个删掉,然后指定我们的主程序的父目录,也就是bin文件夹。),自己可以根据业务需要去下载,并且它本身也有大量的指令,可以支持更高的定制化需求。2,用第三方打包软件,制作安装包。

2024-04-23 09:00:00 705

原创 Qt 集成OSG

Qt 集成OSG

2024-04-22 14:58:56 888

原创 QML与C++交互

QML写界面,业务逻辑使用C++,既能快速的开发界面也能利用C++的强大生态,这是目前比较被认可的方式,那就涉及到QML与C++对象的交互。上述方式相当于同步的方式调用C++中的函数,还可以异步的响应C++中的信号,相当于QML中的槽与C++中的信号进行绑定。点击登录 ,如果密码或用户名错误会将C++的状态信息,实时的显示到左上角的QML Text控件中。我们以登录例子来说明,页面点击登录,将信息传递到c++ http对象进行密码的验证,然后返回登录结果。//调用C++对象中的函数。

2024-04-22 14:33:24 1048

原创 爬取微博热搜榜

打开收,按F12获取网页源码,然后ctrl+hift+c 选择想要爬取的元素,右侧会定位到数据位置。位于 pl_top_realtimehoe 下的 table下的tbody下的tr下的td[2]爬虫的步骤 获取网页数据-》分析网页数据-》提取网页数据。利用python和xpath爬取微博热搜榜。再看链接,跟内容是同一个元素。1,首先获取微博热搜数据。3,利用xpath提取数据。我们想要内容和链接。

2024-04-07 10:44:40 373

原创 python 利用xpath 爬取一周天气

爬取 中国天气网指定城市一周的天气,以天津为例。

2024-04-03 16:17:03 562

原创 客户端日志模块分析

写了多年的软件,用了众多的日志模块,发现基本的功能是差不多的,结合网上一个大佬自己的写的日志模块,分析下其实现的方式。可以在配置文件中设置,大于设置的才会打印出来。一般日志模块是全局使用的,都会写成单例。在调用的时候会用宏,封装一下。命名,文件大小或者行数 属性必不可少,命名一般按照日期,大小或者行数有默认的设置。初始化时,主要是文件创建,内存开辟,如果时异步 则开一个线程循环从队列取内容。日志存储在哪里,已经命名方式。以上两点,绝对日志存在哪里,叫啥名字,多大限制。主要看两个部分,一是初始化,一是调用。

2024-03-18 15:51:20 377

原创 基于C++的反射功能

类似与这种流程图,有很多算子,我在注册的时候,将算子的类名作为参数,拖拽结束后,获取类名字符串,自动创建对象。利用C++的发射机制,实现根据字符串创建实例对象。类实现的时候,进行注册。构造的时候,没办法传参。

2024-03-12 17:25:06 248

原创 基于Qt 和python 的自动升级功能

1,服务端使用python3.7 ,搭配 fastapi 和uvicorn 写一个简单的服务,开出一个get接口,用于客户端读取安装包的版本,描述,和路径。1,客户端是一个 QDialog,每次启动时 从服务端获取最新的版本号,大于则开始下载安装包,下载完成后,则执行安装包。json文件长这个样子,每次客户端都解析这个文件,如果最新的版本大于当前的版本,则从url下载文件,并自动执行文件。2,使用的时候 将客户端放到main函数中,并传入当前的版本号。公司内部的一个客户端工具,想加上一个自动升级功能。

2024-03-12 11:38:48 690

原创 iperf 测试网卡带宽

自己在ubuntu上写了一个udp程序,但是延时很大。用iperf测试下实际带宽能达到多少。反过来,linux作为服务端,windows客户端,可以看到输入的数据。2,要确保 windows 端 和linux 端 版本一致 才能通讯。发现linux 大概以每秒900M左右的带宽在输出。5,nload eth0 看下网卡的接收 和发送。1,iperf 指令有大量参数,可以根据需求配置。3,windows 作为服务端运行。4,linux 作为客户端端 访问。1,windows 安装(2,linux 安装。

2024-03-06 12:34:27 412

原创 线程安全的队列

首先对 队列加锁,然后判断当前队列的长度是否大于设定的容量,如果超出则生产者信号量需要阻塞等待,直到消费者 消费了一个,然后继续向下执行添加逻辑。如果不大于设定的长度,则正常向队列添加一个元素,然后唤醒消费者 信号量,取消费。唤醒后,如果此时 消费者或者生产者正在阻塞,则会继续进行,并且检测到了isClose_=false,则会正常退出。如果为空,则说明队列没有元素,消费者等待。这里还有一个函数,用来超时判断,如果队列为空,则等待一定秒数,如果这个时间过后,仍然为空,则直接返回false.

2024-03-01 15:00:18 495

原创 线程池学习

这段代码之后,相当于8个线程,从任务队列tasks 中抢任务,抢到一个执行一个。比如A线程 抢到了任务1,任务1 在执行中过程中,由于队列处于未加锁状态,那B线程,就可以继续抢任务2。这里添加完成之后,上述的8个线程就会从这个任务队列中抢任务,然后执行。(3),加锁 确保 ,各个线程对 任务队列(tasks) 不产生竞争,因为添加任务,取任务都要操作这个队列。如果任务队列不为空,则取出第一个任务,队列减1,然后解锁,执行任务,再加锁。如果线程池是退出状态,则跳出当前循环,当前线程也会退出。

2024-03-01 11:56:10 910

原创 利用N2N实现内网穿透

这个开源工具,可以达到内网穿透的目的,但是数据要经过服务器,最近发现了N2N这个 p2p工具,同样可以进行内网穿透,并且如果在打洞成功的情况下,数据不经过服务器。安装完改下名字吧,默认是本地连接,我改成了TAP,一会儿配置文件要用。-l 为公网服务器ip,后边的32222端口,为服务器端配置文件中的端口号。下载客户端程序,可以自己用源码编译,也好好多好心人已经提供了编译好的程序(这表明 穿透失败了,查下原因,看下NAT类型。-a 是虚拟网卡的ip,确保要穿透的两个内网机器 在同一个网段即可。

2024-03-01 10:14:45 802

原创 C# 通过共享内存调用C++ 算法

比如 C++ 将一个字符串传递给C#,由于他们直接只能使用c接口,传递char* 指针,那必须是C++开辟内存,然后将地址给到C#,但是什么时候清空这个内存 又是个问题。3,双方进行数据交互时,先用4个字节,存入数据的长度,再存入数据内容。上回书说到,将c++算法封装为dll 插件,c++加载后,暴露C风格接口,然后供C#调用。2,C# 在给共享内存传数据时,使用C的memcpy,不使用本身的Marshal.Copy。调用算法时,利用事件进行通知,超时后 将当前图片保存,便于后期查找。

2024-02-26 17:39:43 528

原创 Qt 使用QScintilla 编辑lua 脚本

注意debug 模式 必须加载debug 版本编译的库,不然回提示 ”QWidget: Must construct a QApplication before a QWidget“2, 打开 src/qscintilla.pro 文件 编译出 dll库。利用QScintilla 编辑lua 脚本。1,下载 QScintilla。3,工程中引入这个库。

2024-02-18 15:30:28 1007

原创 C++ 调用js 脚本

使用Qt/C++ 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(目前Qt使用现成的js生态还很麻烦,在这种情况下,推荐使用lua脚本。

2024-02-18 11:53:59 935

原创 使用esp32 cam + SR602人体感应模块制作一个小型的监控

3, 服务器利用python 搭建一个mqtt客户端,订阅到数据后 将图片保存,并发送到指定邮箱。做一个小型的监控,类似电子猫眼,监测到人之后,取一张图 然后发送到自己的邮箱。2,mqtt发送图片,不需要转成base64格式,但是需要重新设置下缓存大小。2. esp32 cam 取图 并通过mqtt协议传到远端服务器。3,这个玩意 发热很严重,还没测试 两节18650电池能用多久。1,接收图片的邮箱,需要开通smtp服务。1.sr602 传感器监测到人。

2024-02-06 17:07:36 775

原创 C++ 调用lua 脚本

这里调用lua 脚本中的process函数,并传入16进制,假设为 温度 湿度数据。并打印函数返回的字符串。1,工程中引入 头文件,库文件。lua二进制下载地址(使用Qt/C++ 调用 lua 脚本 扩展原有功能。解析成两个uint8整型,假设为 温度 和湿度。3,编写my.lua脚本。2, 调用脚本内函数。

2024-02-04 15:21:35 1899

原创 分享一个好用的线程安全的c++ 日志库(spdlog)

2,封装成成一个单例模式,在任何需要使用的地方,直接调用即可。线程安全,简单易用的跨平台日志库。1,将源码加到工程中。

2024-02-01 16:35:25 291

原创 分享一个Qt使用的模块间通信类

不同线程,或者同一线程的不同类之间通信,按照Qt的机制,定义一个信号,一个槽,然后绑定。以两个类A,B为例,A触发一个信号,B执行一个槽,在定义好信号和槽之后,需要在另一处,将两个类的信号和槽进行绑定。如果模块特别多,绑了绑去 略显麻烦,耦合性太高。这样,A 和B 两个类 发布和订阅的唯一字符串标识符只要一致,A 在pubsh 的时候 B 就可以subscribe到,并且A 和B 完全耦合,相互不可见。#include "PSEventController.h"此处分享一个类,别人写的,忘记了在哪看到的。

2024-02-01 16:26:49 569

原创 Qt QGraphicsScene 基于视频的绘图

利用qml 基于opengl 进行渲染,可以达到任意图形的绘制,但是帧率 只有25帧左右。曾经搞在线教育时,尝试在视频上进行文字或者图形的绘制,但是发现利用Qt widget 传sdk 句柄的方式,只能使用窗口叠加的方式(同时将QGraphicsPixmapItem放到最底层,即可达到在上边绘制任意图形的目的。以直线为例,实现的时候 先画一个普通的矩形,然后添加两个控制点,用于改变大小和旋转,通过控制点中 推拽的信号 来改变矩形的大小和旋转的角度,并且在矩形的paint函数中,更新控制点的位置。

2024-01-31 15:30:02 1174

N2Nwindows 客户端 V3版本

N2Nwindows 客户端 V3版本

2024-03-01

批量 将utf-8 编码格式的文件 加bom

批量 将utf-8 编码格式的文件 加bom

2023-12-12

QCefView 使用demo

QCefView 实现的登录功能,QT 与浏览器交互 目前还存在个问题,关闭的时候无法结束进程 QCefView是一个基于cef的封装的控件

2020-12-11

qtenginio-opensource-src-1.6.2.rar

qtenginino为Qt 的云服务平台,此压缩包为 enginino 的的官方例子。内置的todo 已经修改为自己的 golang 后端

2020-07-18

webchannel-qml-example-master.rar

基于QML 与web 访问的例子可实现qml 向web 发信息, web向qml 发信息的功能

2020-03-11

tts.apk 安卓 tts语音引擎

tts引擎,可安装在安卓6.0系统上,下载中文语音包后,可使用QGC语音播报功能

2019-06-27

Qt 实现的跑马灯效果

基于Qt的跑马灯效果,支持配置文件读取。tcp 设置字体、颜色,大小,内容功能

2019-06-18

禁飞区数据库

处理后的禁飞区 sqlite 数据库,可直接加载到地面站里。

2019-01-18

处理后的禁飞区 csv文件

处理后的禁飞区 csv文件,可保存到数据库,用于 QGC的读取并显示

2019-01-17

中国禁飞区原始数据 机场

中国禁飞区数据 193个 机场的 经纬度坐标,可用于 软件显示 禁飞区使用

2019-01-17

Axure 滑动解锁/起飞 窗口设计

基于 axure 8 的 无人机滑动起飞 窗口 设计 可用解锁,起飞 等 二次确认

2018-07-31

基于 QML的 串口调试助手

基于QML 的 串口调试 助手,可成功 接收 并发送数据 。部分功能没有实现

2018-07-11

Qt 调用 google Earth 代码

Qt 调用 Google earth plugin com组件的代码,可成功 加载google 地球

2018-03-09

QML 安卓应用 135todo

用 QML 实现的 安卓 记事本 应用。参考 https://segmentfault.com/a/1190000000667272 这个人写的 博客。把图片 和工程 补全了 。

2018-03-08

Qt 二维码打印

基于的Qt 实现的二维码 打印软件,可实现 以毫米为单位的 位置调整

2018-02-10

QGroundControl Analyze 模块 源码

QGroundControl Analyze 模块源码,引用QWt。可独立编译成库,用于传感器原始数据的分析。

2018-02-10

空空如也

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

TA关注的人

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