
Qt
土拨鼠不是老鼠
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenCASCADE 解析stp文件,并使用VTK显示
四,或者加载stp 文件,网格化后读取点和面片信息, 直接构造成vtk所需格式。三,加载stp文件,转成stl 并保存。之后vtk加载stl文件。cmake 引用头文件,库文件(静态库)一,occt 编译。二,occt 库引用。原创 2025-04-08 14:36:12 · 410 阅读 · 0 评论 -
香橙派/树莓派 利用wiring 库读取DHT22 温湿度数据
利用Wiring 读取DHT22 温湿度传感器数据原创 2025-02-24 10:36:08 · 274 阅读 · 0 评论 -
Qt 中集成mqtt协议
声明一个单例类,将订阅到主题,直接以属性的方式 进行暴露,这样QML文件中 就可以直接使用。下边是订阅一个温度 和湿度的主题数据。我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台时 方便,直接编译就行了。一,引入qmqtt 库。原创 2025-02-23 20:06:48 · 878 阅读 · 0 评论 -
linux 下利用MQTT进行数据传递
将数据封装成消息,然后定义一个唯一的主题 发布即可。一,安装MQTT服务。原创 2025-02-23 08:44:44 · 204 阅读 · 0 评论 -
利用香橙派3 做一个摸鱼助手
作为一个专心码代码的程序员,最担心的就是别人突然出现在你的身后,盯着你写bug,所以呢,利用手中吃灰的香橙派做了这么一个设备,它的外表开起来就是一个纸抽盒,实际 是经过改装增加了时间,温湿度,日期,最新电影 等功能的一个显示屏,最重要的是利用摄像头监视身后有没有人过来。集成天气,时间,日期,毒鸡汤,彩虹屁,最新电影 等信息。1,摄像头 利用opencv循环检测是否存在人脸,存在则启动震动马达,起到一个通知的作用。2,DHT22 检测温湿度,然后利用MQTT 传输到上位机软件。一,软件部分,利用QML。原创 2025-02-23 08:29:34 · 582 阅读 · 0 评论 -
QML Image 圆角设置
Image 默认是没有圆角的,但是为了让ui看起来美观,有时需要加上圆角,这里分享一种利用遮罩实现的方法。原创 2025-02-19 10:29:05 · 301 阅读 · 0 评论 -
Qt中利用httplib调用https接口
配置头文件,库文件。关键的一句 开启ssl DEFINES += CPPHTTPLIB_OPENSSL_SUPPORT。地址如下,我Qt版本是5.15.2 ,openssl选择的是 64位(Win64OpenSSL-3_3_3.msi)httplib中如果要调用https接口,需要开启OPENSSL支持,经过半天坑爹得摸索,总结下经验。2,拷贝 bin/include/lib文件放到Qt工程中。1,下载 并安装Win64OpenSSL。5,调用https接口。原创 2025-02-19 09:03:29 · 610 阅读 · 0 评论 -
香橙派3 LTS GPIO使用
(3),输出电平 digitalWrite(IO_PIN, HIGH);(2),设置输出模式 pinMode(IO_PIN, OUTPUT);以7号物理引脚为例,让其变为输出,并输出 高低电平。(1),wiringPiSetup() 初始化。一,安装 wiringOP库。(1),让其变为输出模式。(3),让其输出低电平。(2),输出高电平。四,代码的方式进行控制。原创 2025-02-16 09:00:41 · 489 阅读 · 0 评论 -
基于Qt的仪器类测量软件架构梳理
项目的需求 就是 GUI 控制-》 传感器(轴,压力,激光位移等) 完成任务-》根据反馈的数据 判断结果。(1),将所有传感器 结构进行封装,统一交由DeviceManager 管理。(2),将用到所有数据(文件中,内存中) ,由DataManager管理。(4),UtilManager 负责全局共用的功能,比如日志,计算等。(5),将通用的数据结构,类 放到一个公用data.h 文件中。去年做了几个仪器类测量软件,现在整理当时的软件架构。(1),GUI发起 具体业务的处理。(3),将业务逻辑进行封装。原创 2025-02-14 16:41:31 · 504 阅读 · 0 评论 -
QML 全局统一样式的设置
想将颜色统一放到一个文件里,在纯C++中,可以弄一个配置文件,或者一个 .h文件 定义大量的宏定义。一,定义一个文件用来放置颜色 或全局需要的设置,并把这个文件声明为单例。2,main.cpp 函数 注册这个类型。黑色主题 确实显得比较高级。3,使用的地方 导入即可。原创 2025-02-14 13:39:43 · 298 阅读 · 0 评论 -
基于香橙派 和QML 写了一个应用
上层抽象出一个通用的Card 样式参考华为的卡片,每个独立的功能继承Card,比如温度,湿度,天气。根据以前项目经验,利用QML+香橙派重新开发一个应用,主要是为了重新梳理基于QML的程序框架。利用天聚数行的接口,用MVC模式,来展示。默认一天100次调用,个人使用足够了。单击Card 切换到对应功能的详情页,比如单击 天气,则切换到一周的天气页。并且,Card切换到详情页时 采用动态加载的方式。单击 每个详情页左上角的返回按钮,返回到主页。原创 2025-02-13 14:22:18 · 312 阅读 · 0 评论 -
Qt 无边框窗口
Qt 无边框窗口原创 2025-02-05 13:59:13 · 241 阅读 · 0 评论 -
基于Qt的Ribbon界面框架
Qt的Ribbon界面框架原创 2025-02-05 13:34:29 · 564 阅读 · 0 评论 -
Qt 使用modbus协议
5,此种方式 优点就是Qt原生框架,但是缺点是 这种方式是异步的方式,想要做到同步调用,比如轴系运动中,需要自己去同步,试过 QEventLoop的方式,但是不行,会丢失事件。1,因为modbus的读写 需要在同一个线程中,所以需要在主线程中利用moveToThread的方式,将业务逻辑封装到 子线程中。4, 主线程 使用moveToThread 将上述业务线程进行封装,然后主线程中 用信号,进行触发。3,继承上述类,封装业务逻辑,以压力传感器为例。//能读出数据 认为连接成功。2,modbus封装。原创 2024-12-16 13:09:30 · 1698 阅读 · 0 评论 -
如何将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 · 1929 阅读 · 1 评论 -
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 · 1115 阅读 · 0 评论 -
西门子 PLC snap7 使用
2. 把examples/cpp 下的 snap7.h 和cpp 加到工程里。5. 用Hsl工具测试下,这里再M100 位置 写入了一个byte ,值为1。集成snap7库,对西门子plc进行访问。3. 封装一个单例 来使用 这个库。4. 使用的时候 直接调用业务函数。原创 2024-05-16 14:10:59 · 646 阅读 · 1 评论 -
QML 本地存储(Setting,sqlite)
3,main.cpp 中 指定下数据库的保存路径,比如当前路径。不指定的话,会默认存到系统路径,不太好找。跟QWidget 中的QSettings 一样,可以简单的存储一些配置。main.cpp 中需要 定义 应用程序名称,公司名称,域名称。2,使用的时候 引入js 文件,之后直接调用接口就可以了。按钮移动时将x y 保存到Settings 中。下次加载页面时 从Settings 读取位置。可以存储一些复杂的数据。1,将数据库操作 单独封装成一个js文件。我们以一个按钮的位置为例,进行讲解。原创 2024-05-07 15:14:41 · 1356 阅读 · 0 评论 -
PyQt程序的打包
F表示生成单文件模式,即只有一个可执行文件,比如windows下的exe。-n表示指定输出文件名,例如-n app.exe。-i表示指定图标文件,例如-i icon.ico。-w表示生成窗口模式,即不显示控制台窗口。打包后的程序位于 dist文件下。记录下PyQt程序的打包。原创 2024-05-06 09:01:46 · 475 阅读 · 0 评论 -
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 · 535 阅读 · 1 评论 -
QML model-view 框架
比如一个通讯录,可以用list展示,也可以用grid展示,这都属于view部分,可以不同。原创 2024-04-29 16:12:49 · 462 阅读 · 0 评论 -
windows下其它软件的自动打开与点击
项目要用到第三方软件,这个软件没有提供SDK,只提供了两个exe,每次开机后需要启动这两个exe,并且还要点击上边的两个按钮。这样的用户体验怎么能让人接受呢,如果查资料,发现windows提供了接口,可以自动化操作。窗体标题 或者句柄 可以使用 Spy++ 这个工具获取。原创 2024-04-29 08:57:32 · 376 阅读 · 0 评论 -
树莓派下开机自启的Qt程序配置
比如我们的程序在test文件夹内,内部含有完整的Qt应用程序及依赖库,我们在同级目录下创建一个安装脚本 install.sh。我们需要编写一个脚本用于安装qt打包后的程序,也就是整个文件夹。脚本的作用就是将文件夹拷贝到指定的位置。我们需要编写两个脚本,来启动和停止我们的应用。这里假设我们的应用名称为test。Qt开发的GUI程序,部署到树莓派中,并设置开机自启。1,制作启动脚本和停止脚本。原创 2024-04-29 08:56:16 · 923 阅读 · 0 评论 -
一篇文章 学会Qt 样式表(qss)
QML 中风格和主题的设计可以通过配置文件选择现有几种中的一种,或者直接在控件定义时,指定其属性,如背景颜色或者字体大小。在QWidget框架中,则通过了一种叫做qss样式表的东西来进行描述,跟CSS逻辑上类似。那这个谁,有好多种写法,比如所有按钮,某个按钮,按下的按钮。而这个样子又有好多,比如背景色,边框,圆角等。2,字体 一般是一个全局的设置,所以可以在此处设置全局字体。1,新建一个qss文件,并添加到资源里。然后在main函数中,进行全局的设置。3,我们以如下的窗口来举例说明。原创 2024-04-28 10:43:57 · 932 阅读 · 0 评论 -
QML实现 无边框 可移动 可缩放窗体
利用QML实现无边框窗体,要求可移动,可缩放。原创 2024-04-26 08:55:11 · 1028 阅读 · 0 评论 -
QML中调用HTTP请求
涉及到Http请求,第一反应可能是使用Qt的QNetworkRequest和QNetworkReply实现,然后QML再与其交互,但是这样过于麻烦了。其实QML自己已经具备了http网络请求访问的功能。而且使用起来很方便。主要是利用XMLHttpRequest这个类,请求接口,然后将返回的数据解析成json对象(JSON.parse),之后就可以像js一样去拿json对象里的数据了,当然前提是接口返回得数据是json。我们这里举一个访问天气接口,然后解析其数据的例子。原创 2024-04-25 16:55:31 · 1124 阅读 · 0 评论 -
QML 中的状态
使用QWidget的思路去实现就是在按钮click对应的槽函数中,依次获取三个button的指针,然后改变其颜色,这样也能实现,但是不够优雅。QML的思路是,全局定义一组状态,然后每个状态来控制具体的属性,使用时只要切换不同状态就可以了,后续修改的话,只需要修改这个全局状态就行,并且三个按钮集中暴露在这组状态中。状态描述了当前用户界面样子,QML中一个状态定义了一组属性的改变,并且会在一定条件下被触发。//红灯状态 红灯亮 其它灭。//定义一组状态 规定每个状态下 的属性。//依次切换三个状态。原创 2024-04-25 09:00:32 · 753 阅读 · 0 评论 -
QML 不同风格和主题的切换
Quick程序提供了方便的用于切换不同风格和主题的配置文件,如果没有设计稿,又想界面没那么丑,那么可以用这套配置,让应用看起来相对专业一点。3. backbround,color类型,表示背景色,默认由主题指定(light或者dark)一种受到 macOS 的设计风格启发的风格,它提供了类似 macOS 风格的外观和交互体验。4. elevation,int类型,表示海拔高度,值越大,阴影越深,该值与具体控件相关。6. theme,枚举类型,表示主题,默认是Light,也可修改为Dark。原创 2024-04-24 07:01:57 · 1400 阅读 · 0 评论 -
windows下利用NSIS制作安装包
经过程序员抓耳挠腮的开发,应用终于开发完毕了,那接下来无论发布给客户还是给测试,最好的方式时打一个安装包,直接给release文件夹,就显得不太专业了。1,我们以一个QML程序为例,新建一个pkg/v1.0.0/bin文件夹,并将 release版本的pkgTest.exe拷贝到这个bin文件夹下。选择目录这一步很关键,把自带的两个删掉,然后指定我们的主程序的父目录,也就是bin文件夹。),自己可以根据业务需要去下载,并且它本身也有大量的指令,可以支持更高的定制化需求。2,用第三方打包软件,制作安装包。原创 2024-04-23 09:00:00 · 1039 阅读 · 0 评论 -
QML与C++交互
QML写界面,业务逻辑使用C++,既能快速的开发界面也能利用C++的强大生态,这是目前比较被认可的方式,那就涉及到QML与C++对象的交互。上述方式相当于同步的方式调用C++中的函数,还可以异步的响应C++中的信号,相当于QML中的槽与C++中的信号进行绑定。点击登录 ,如果密码或用户名错误会将C++的状态信息,实时的显示到左上角的QML Text控件中。我们以登录例子来说明,页面点击登录,将信息传递到c++ http对象进行密码的验证,然后返回登录结果。//调用C++对象中的函数。原创 2024-04-22 14:33:24 · 1209 阅读 · 0 评论 -
基于Qt 和python 的自动升级功能
1,服务端使用python3.7 ,搭配 fastapi 和uvicorn 写一个简单的服务,开出一个get接口,用于客户端读取安装包的版本,描述,和路径。1,客户端是一个 QDialog,每次启动时 从服务端获取最新的版本号,大于则开始下载安装包,下载完成后,则执行安装包。json文件长这个样子,每次客户端都解析这个文件,如果最新的版本大于当前的版本,则从url下载文件,并自动执行文件。2,使用的时候 将客户端放到main函数中,并传入当前的版本号。公司内部的一个客户端工具,想加上一个自动升级功能。原创 2024-03-12 11:38:48 · 912 阅读 · 0 评论 -
C++ 调用js 脚本
使用Qt/C++ 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(目前Qt使用现成的js生态还很麻烦,在这种情况下,推荐使用lua脚本。原创 2024-02-18 11:53:59 · 1356 阅读 · 0 评论 -
C++ 调用lua 脚本
这里调用lua 脚本中的process函数,并传入16进制,假设为 温度 湿度数据。并打印函数返回的字符串。1,工程中引入 头文件,库文件。lua二进制下载地址(使用Qt/C++ 调用 lua 脚本 扩展原有功能。解析成两个uint8整型,假设为 温度 和湿度。3,编写my.lua脚本。2, 调用脚本内函数。原创 2024-02-04 15:21:35 · 2241 阅读 · 0 评论 -
分享一个Qt使用的模块间通信类
不同线程,或者同一线程的不同类之间通信,按照Qt的机制,定义一个信号,一个槽,然后绑定。以两个类A,B为例,A触发一个信号,B执行一个槽,在定义好信号和槽之后,需要在另一处,将两个类的信号和槽进行绑定。如果模块特别多,绑了绑去 略显麻烦,耦合性太高。这样,A 和B 两个类 发布和订阅的唯一字符串标识符只要一致,A 在pubsh 的时候 B 就可以subscribe到,并且A 和B 完全耦合,相互不可见。#include "PSEventController.h"此处分享一个类,别人写的,忘记了在哪看到的。原创 2024-02-01 16:26:49 · 685 阅读 · 0 评论 -
Qt 基于海康相机 的视频标绘
利用qml 基于opengl 进行渲染,可以达到任意图形的绘制,但是帧率 只有25帧左右。如今要开发光学测量仪,发现使用QGraphicsPixmapItem 进行图片的渲染,可以利用QGraphicsItem 进行任务图形的叠加绘制,并且帧率目测大概在25帧所有,满足需求。曾经搞在线教育时,尝试在视频上进行文字或者图形的绘制,但是发现利用Qt widget 传sdk 句柄的方式,只能使用窗口叠加的方式(同时将QGraphicsPixmapItem放到最底层,即可达到在上边绘制任意图形的目的。原创 2024-01-25 15:13:04 · 1071 阅读 · 0 评论 -
Qt 基于海康相机的视频绘图
自己取图然后转成QImage ,再向QWidget 进行渲染,根据以往的经验,无法达到很高的帧率。因此决定使用相机SDK自带的渲染功能,也就是传一个句柄给到sdk。但是这样视频渲染出来了,向上绘制图案,会被视频遮挡住,因此这里采用了两个窗口叠加,然后上层窗口设置透明背景的方式来实现。在视频窗口上进行绘图,包括圆,矩形,扇形等。原创 2023-11-21 09:30:04 · 1695 阅读 · 0 评论 -
QML android 采集手机传感器数据 并通过udp 发送
利用 qt 开发 安卓 app ,采集手机传感器数据 并通过udp 发送。原创 2023-09-12 09:33:05 · 1854 阅读 · 3 评论 -
Qt 对16进协议进行处理
场景:嵌入式设备中数据的交互的,比如串口,udp/tcp一般都是自定义的协议, 举个例子,如下协议,使用udpscoket进行数据的收发。那完整的16进制 心跳包为 0x55 0x66 0x88 0x00 0x03 0x01 0x00 0x88。假设心跳包的 MSG_TYPE 为01,负载数据为 00 88。发送方ID 也为88。Msg_type+payload的字节长度。原创 2023-07-20 17:08:29 · 1001 阅读 · 0 评论 -
树莓派 MCP3021 读取电池电量
树莓派 接MCP3021 模数转换器 读取电池电量。原创 2023-05-30 14:01:37 · 956 阅读 · 0 评论 -
Qt 树莓派 按键信号接收
2,线程中循环 检测按键信号。硬件用树莓派,上层应用用QT。原创 2023-05-30 13:57:35 · 374 阅读 · 0 评论