
QT
文章平均质量分 83
致守
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【笔记】QT坐标转换(QTransform 类)
返回此矩阵的逆矩阵,若矩阵是奇异的(非可逆的),则返回的矩阵是单位矩阵,若参数invertible 有效(即不为 0),则若矩阵可逆,则将其设置为 true,否则将其设置为 false。设置世界变换矩阵,若 combine 为 true,则把当前矩阵与 transform 组合,否则 transform会取代当前矩阵。若矩阵表示的是仿射(affine)变换,则返回 true,否则返回 false。把此矩阵作为仿射矩阵返回,注意:若为透视转换,则转换后将导致数据丢失。若矩阵表示缩放变换,则返回 true。转载 2025-05-29 15:10:03 · 80 阅读 · 0 评论 -
Qt开发技术:Qt绘图系统(二)QPainter详解
QPainter类在窗口和其他绘制设备上执行低级绘制。QPainter提供高度优化的功能来完成大多数图形用户界面程序所需的工作。它能画出从简单线条到复杂形状如饼图和弦等一切图形。它还可以绘制对齐的文本和像素图。通常,它绘制一个“自然”坐标系,但它也可以进行视图和世界变换。QPainter可以对继承QPaintDevice类的任何对象进行操作。QPainter的常见用法是在窗口的绘制事件中:构造和自定义(例如设置笔或画笔)绘制器。然后画。记住在绘制后销毁QPainer对象。转载 2025-05-29 13:06:34 · 104 阅读 · 0 评论 -
Qt/C++ Qt状态机框架(QStateMachine)的简明指南
本篇博文主要参考原文,并增加了自己实践过程中的理解。下面就直奔主题。Qt状态机框架提供了创建和执行状态图的类。概念和符号基于Harel的状态图,这也是UML状态图的基础。状态机执行的语义基于状态图XML (SCXML)。状态图提供了一种图形化的方式来模拟系统对刺激的反应。这是通过定义系统可能处于的状态,以及系统如何从一个状态转移到另一个状态(状态之间的转换)来实现的。事件驱动系统(如Qt应用程序)的一个关键特征是,行为通常不仅依赖于上一个或当前事件,还依赖于之前的事件。有了状态图,这些信息很容易表达。转载 2025-05-25 23:06:00 · 189 阅读 · 0 评论 -
Qt状态机框架介绍(一)
状态机,简写为FSM(Finite State Machine),状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。简单来说,状态机,就是负责执行各种状态的切换。Qt状态机的使用场景主要针对比较复杂的界面,或者需要切换不同状态的控件,比如三态按钮,每个状态对应不同的样式,如果自己做状态管理,那就比较麻烦了。转载 2025-05-25 23:02:12 · 82 阅读 · 0 评论 -
Qt状态机框架——如何避免状态爆炸
前几节讲述了如何在Qt状态机框架下如何建立一个状态机,如何迁移状态,如何中断状态机,如何分组状态。考虑这样一个例子:有两个状态迁移能够退出并行状态,当这两个条件同时为真是,这个状态迁移中的第二个将不会起作用,因为第一个条件已经触发退出了并行状态,第二个迁移不会被处理。我们上每个独立的属性单独作为一个状态分组,状态分组维护自己的子状态迁移,这样即使属性增加,状态和状态迁移增加数量也是线性的,不会产生爆炸的结果,状态如类似于下面这样:;然后如果其中一个子状态退出并行状态,那么所有子状态都会退出。转载 2025-05-25 23:00:42 · 40 阅读 · 0 评论 -
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
在深入探究 Qt 的事件机制之前,了解其基本框架和核心概念至关重要。这不仅有助于我们理解 Qt 应用程序的行为方式,而且能够揭示其背后的设计哲学。正如计算机科学家 Donald Knuth 所指出的,“优良的设计在于深层的理解,而不仅仅是表面的饰物。事件机制(Event Mechanism)在 Qt 中指的是一种处理和响应系统或用户产生事件的方式。这些事件可以是用户的鼠标点击、按键输入,也可以是系统级的信号,比如定时器超时或网络数据到达。转载 2025-05-25 22:45:42 · 91 阅读 · 0 评论 -
开源项目推荐:OpenGL/Vulkan/Cairo/Skia/angle/VTK/OpenVG/MyPaint/GIMP/Krita/Pencil2D/inkspace/enve等绘图库或画图软件
Windows环境下二维绘图引擎有多种选择:GDI、GDI+、DirectDraw、Qt/QPainter、Agg、Cairo、skia、Direct2D、Direct3D、OpenGL、Vulkan等。GDI:微软原生的二维绘图引擎。优点:微软的全力支持,作为操作系统核心层效率方面不用担心,支持多种开发框架(含语言):WinSDK、MFC、Delphi等。缺点:不是面向C++对象组织的,使用起来较为繁琐;不支持反锯齿,不支持复杂的绘图效果(这个相对于GDI+而言)。转载 2025-05-25 18:07:02 · 272 阅读 · 0 评论 -
Qt 之图形(QPainterPath)
QPainterPath 类(绘图路径)提供了一个容器,用于绘图操作,可以创建和重用图形形状。绘图路径是由许多图形化的构建块组成的对象,例如:矩形、椭圆、直线和曲线。构建块可以加入在封闭的子路径中,例如:矩形或椭圆。封闭的路径的起点和终点是一致的,或者他们可以作为未封闭的子路径独立存在,如:直线和曲线。QPainterPath 可以被填充、描绘轮廓、裁剪。要为一个指定的绘图路径生成可填充的轮廓,可以使用 QPainterPathStroker 类。转载 2025-05-25 18:04:33 · 81 阅读 · 0 评论 -
QT信号与槽的6种连接方式以及传递参数为自定义参数时
其次在信号端发射的信号类型应该是QVariant,QVariant是多种类型的联合,QVariant类中有个SetValue(T& value)方法,将自定义 T 类型的数据保存到QVariant对象中,可以理解为是自定义类型被封装成了QVariant的形式,这样,我们自定义的T类型的对象就能够通过所有参数和返回值为QVarian类型传递。与默认工作方式相同,只是不能重复连接相同的信号和槽,因为如果重复连接就会导致一个信号发出,对应槽函数就会执行多次。当信号发送后,相应的槽函数将立即被调用。转载 2025-05-24 14:22:01 · 172 阅读 · 0 评论 -
Qt Creator打造VScode one dark pro主题配色
最后附上配色方案的链接地址:vscode 配色方案地址Qt Creator打造VScode one dark pro主题配色_qt仿vscode主题-CSDN博客。转载 2025-05-24 14:04:19 · 97 阅读 · 0 评论 -
QT QTreeView\QTreeWidget控件 使用详解
本文详细的介绍了、QTreeWidget控件的各种操作,例如:新建界面、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等;当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观。转载 2025-05-17 10:41:07 · 287 阅读 · 0 评论 -
史上最全的QMap遍历方式
使用C++11的for循环遍历和std::for_each遍历QMap的方式最为常用和简洁,效率也比较高,占用资源较少。但是,不同的遍历方式适用于不同的场景,需要根据具体情况选择合适的遍历方式。如果需要修改QMap中的元素,应该使用迭代器进行遍历。如果只需要读取QMap中的元素,可以使用const迭代器或者C++11的for循环遍历。史上最全的QMap遍历方式-CSDN博客。转载 2025-05-17 10:39:16 · 346 阅读 · 0 评论 -
Qt信号发送过快,槽函数处理不过来解决方法
槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。通过增加对信号发送的限制,这样的话可以实现,只有在槽函数处理完成后,才会开始发送信号。跨线程使用信号与槽连接,信号的发送时间间隔小于槽函数处理的时间间隔,造成的问题。这样的话就可以直接在槽函数里,实现将发送信号的对象屏蔽和恢复。现象:在我们连续点击按钮后,能明显看到打印的信息有延时。这个也是可以的,但是当我们子线程,处理所需时间很长时,我们需要在等槽函数执行完后,才能发送新的信号。转载 2024-10-31 19:28:42 · 312 阅读 · 0 评论 -
android存储路径详解
前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安装不了,提示解析包出错。后来查询发现,安装apk是调用了PackageInstaller,没有相关权限,这个无法获取内部路径,所以会安装不了。借机也复习了一遍Android下面存储相关的知识点,特来总结一番。转载 2024-07-24 16:24:25 · 5209 阅读 · 0 评论 -
Android文件目录、存储概念(/storage/sdcard0, /sdcard, /mnt/sdcard ,/data/data,/data/user/0)
今天刚好想弄清楚Android的文件路径问题,就写了一些的方法试试路径,得出结果如下。但是查找网上的方法得出结论又有点不一样,别人是mnt,我是storage,有点奇怪。转载 2024-07-24 16:04:30 · 536 阅读 · 0 评论 -
深入理解Android中的缓存与文件存储目录
cacheDircacheDir是一个内部缓存目录,用于存放那些可以被快速清除且不会对应用造成太大影响的文件。例如,网络请求的响应结果可以临时存储在这里,当系统内存紧张时,这些文件可能会被自动删除。这个目录位于下。希望通过本文的详尽解析,你已经对Android中不同存储目录的特性和用途有了清晰的认识。合理选择和使用这些目录,不仅能够增强应用的稳定性和性能,还能提供更好的用户体验。如果你有任何疑问或见解,欢迎在评论区留言讨论!转载 2024-07-24 16:03:40 · 240 阅读 · 0 评论 -
qt调用android的文件系统
通过Qt Android Extras模块,我们可以方便地访问Android的文件系统。本文介绍了如何使用Qt调用Android的文件系统,并提供了相应的代码示例。通过这些示例,我们可以在Qt应用程序中实现对设备文件系统的读取和写入操作。转载 2024-07-24 12:59:39 · 369 阅读 · 0 评论 -
AndroidMainfest详解
当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示。移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置。:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的。:用户选择activity时,软键盘总是显示的状态。:用户选择activity时,软键盘总是被隐藏。转载 2024-07-24 12:58:25 · 350 阅读 · 0 评论 -
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
如同程序设计大师Martin Fowler在《重构:改善既有代码的设计》中提到的,“任何一个软件系统都是在不断变化的,良好的设计应当能够适应这种变化。如Dijkstra所强调的那样,简单性和清晰的结构是高效程序设计的核心,而Qt正是在这方面提供了极好的支持。从心理学的角度看,简化的生命周期管理降低了开发者在内存管理上的认知负担,使他们能够将更多的精力投入到创造性的工作中。在Qt中,管理内存通常是通过精心设计的对象和对象树来实现的,确保在对象不再需要时,能够及时地释放内存。” 这句话在编程领域同样适用。转载 2024-05-30 14:58:59 · 223 阅读 · 0 评论 -
关于GNU GPL
这里简单介绍关于自由软件的一个重要协议:GNU GPL。具体信息需要参照官方网站(转载 2024-05-20 12:52:48 · 684 阅读 · 0 评论 -
QML语法-基础篇
Qt Quick 为 Qt 引入了一门叫(Qt Meta/Modeling Language)的脚本语言,它是 ECMAScript 标准的实现。所以 QML 语法是在 ECMAScript 语法的基础上实现的。语言的标准是由 Netscape、Sun、微软、Borland 等公司基于 JavaScript 和 JScript 锤炼、定义出来的。ECMAScript 仅仅是一个描述,定义了的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基础,正如 JavaScript 那样。转载 2023-03-18 19:57:40 · 665 阅读 · 0 评论 -
QML语法-对象篇(下篇)
Date 对象用于处理日期和时间。当使用无参构造函数创建 Date 对象时,该对象会自动把当前日期和时间保存为其初始值。实际上 Date 对象还可以用下面的方式来创建:示例如下:简单的示例:Date 还有一些与 UTC 吋间相关的方法,如 getUTCDate()、getUTCDay()、getUTCMonth() 等。看一个使用 Date.now() 计算耗时的小示例:Date 还有很多其他的方法,具体请参考:Date QML Type。转载 2023-03-18 19:56:09 · 492 阅读 · 0 评论 -
QML语法-对象篇(上篇)
如果你用过 C++ 或 Java,肯定熟悉类(class)。在中并没有 “类” 这个词, 其对应的是 “对象定义”,不过这太拗口了,因此还是诜择使用 “类” 这个词。对象是由 new 运算符加上要实例化的类型的名字创建的。在语法上与 C++ 类似。如果类的构造函数没有参数,括号可以省略;如果有多个参数, 则必须使用括号。为了避免混乱,笔者建议都使用括号。转载 2023-03-18 19:54:29 · 1288 阅读 · 0 评论 -
【Qt】一篇全面的信号和槽函数机制总结
在Qt框架下,信号发出分为两种: 1、【每个类预定义的信号】:这些信号何时发出可以通过查看官方文档获知。 2、【自定义的信号】:这些信号的发出由开发人员自行定义。(2-2)信号的处理 当一个信号发出时,连接到它的槽函数通常会立即执行,就像一个普通函数调用一样。在这种情况下,信号和槽函数机制是完全独立于GUI事件循环的,并不会干扰GUI的事件循环。转载 2023-03-05 10:02:25 · 1284 阅读 · 0 评论 -
Qt多线程中槽函数在哪个线程里执行分析
也是代码中注释掉的 moveToThread(this)所做的就是将整个 thread 类移到次线程中,去掉注释,你会发现slot在次线程中运行。可以看到,主线程id和slot_main()中的线程id是一样的,槽函数的线程和主线程是一样的!所以thread类中的slot_main()是在主线程执行,run()函数是在次线程执行。主线程(信号)QThread(槽), 但由于没说槽函数是在主线程执行的,所以不少人都认为它应该是在次线程执行了。run函数中的代码时确定无疑要在次线程中运行的,那么其他的呢?转载 2023-03-05 09:09:44 · 1679 阅读 · 1 评论 -
QML控件类型:ComboBox
Window {width: 640ComboBox {id: canvaswidth: 12height: 8onPaint: {2 : 1radius: 2padding: 1clip: trueradius: 2(1126条消息) QML控件类型:ComboBox_友善啊,朋友的博客-CSDN博客_qml中combobox。转载 2023-02-19 08:24:55 · 1986 阅读 · 0 评论 -
Qml控件:ComboBox
的类型作为代理,这一点是为了确保弹框能够正常的交互工作以及自动关闭,如果使用其他类型作为代理组件,那么一定需要自己关闭弹框。在此我们使用官方推荐的。去定制,因为你的数据是一个数组,并且更有可能是一个动态数组(可以支持增删改等操作)。是一个图片按钮,跟按钮的属性基本一致,只是多了一个图片,可以参考这骗文章:。类型去定义,但它不能使用其他类型定义,毕竟这是一个弹框,不可以用。对于每项的背景色的定制,通上述的定制背景一样,使用一个。,这个和上述的定制背景可以做一样的操作。来说,最重要的是要定制它弹出的内容,及。转载 2023-02-19 08:18:47 · 1722 阅读 · 0 评论 -
QML在Charts中动态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值
注意:在Series中修改数据的值比remove后再insert效率要高很多,特别是数据量特别大的时候,remove的时候很可能界面就卡死了,因此在动态修改Series值首选替换数据值!中数据的值,通过查看帮助文档,发现QML Charts中关于XYSeries的方法的说明如下图,共7个方法,其中数据替换的方法replace只写了一种通过点的值进行替换的方法。因此根据数据index动态替换Series的数据的方法。项目需要对Charts中的图表动态的修改。转载 2023-02-19 08:12:29 · 1160 阅读 · 0 评论 -
ADB 命令知多少?详细 ADB 命令大全来啦
adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于Android 7.0以下,必须先启动app。其中客户端是用来操作的电脑,服务端是Android设备。ADB也是Android SDK中的一个工具,可以直接操作管理Android模拟器或者真实的Android设备。简而言之,ADB就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作!ADB可以直接操作管理手机模拟器或者真实的手机设备(如华为手机)。...转载 2022-08-16 22:59:40 · 20532 阅读 · 0 评论 -
ADB—查看设备信息
ADB,即,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。转载 2022-08-14 12:46:30 · 9535 阅读 · 0 评论 -
adb命令 android 串口_「Android」Android常规adb命令
aapt全称:Android Asset Packaging Tool,看名称就知道他的作用是啥(Android资源打包工具),使用aapt时间先配置aapt环境(可以查看前文配置adb的文章,都是将路径添加到path中,方法相同,aapt链接: https://pan.baidu.com/s/1J4xpCTYUhWcWVFmrvgPiGA 提取码: i3yg)才能使用aapt。上述三个参数(-d -s -e)用于指定目标设备,如果有多个设备/模拟器连接,需要为命令指定目标设备,否则会无法执行命令。...转载 2022-08-14 12:45:35 · 2145 阅读 · 0 评论 -
adb shell 调试 Android 串口
为了调试这些串口,通常需要将它们飞线接出来,用pc的串口连接调试。在adb shell里是可以直接调试串口的,就不用飞线了,还可以验证Android串口配置是否正确。microcom的-t设置要合理,太短,输入命令可能输入不完就退出了,太长要等很久才退出。如果没有响应,请检查Android串口配置是否正确,串口号是否对,波特率是否正确。必须先执行第一个窗口,再执行第二个窗口,因为不设置波特率,第二个窗口显示会有问题。然后可以在第一个窗口输入命令,在第二个窗口可以看到命令和响应。ttyS0 要操作的串口。.转载 2022-08-14 12:44:39 · 2948 阅读 · 0 评论 -
Android查看所有串口和usb设备快捷方法
busybox stty -F /dev/ttyS0 ispeed 115200 ospeed 115200 cs8 //该命令将串口1(/dev/ttyS0)设置成115200波特率,8位数据模式。busybox stty -F /dev/ttyS0 -a //查看串口参数,查看串口0(/dev/ttyS0)当前的参数,包括波特率、数据位等。在写的串口程序不能正常接收发送数据,可能是linux下的串口设备没有打开,需要改变串口设备的权限(chmod 777 /dev/ttyUSB0)....转载 2022-08-14 12:43:56 · 4886 阅读 · 0 评论 -
QT for Android串口开发
最近在搞QT for Android开发,在网上搜了下解决方案发现都是需要java库的支持,QT原生接口QSerialPort不支持Android系统的串口开发,因为QT的接口掉的都是标准的接口,而Android都是非标准的,所以用不了,只能自己写。...转载 2022-08-14 09:06:50 · 1641 阅读 · 1 评论 -
Qt编写提示进度条的实现示例
我们在很多的安装包中,在安装过程中,经常可以在底部看到一个漂亮的进度条,上面悬浮着显示对应的进度,然后底部进度多种颜色渐变展示,Qt自带的进度条或者操作系统的进度条样式,不够炫,这次索性直接来个自定义绘制实现,至于是继承QWidget类还是QProgressBar类,都无所谓,如果是继承自QWidget类的话,就需要自己设置最大值最小值范围值,而继承自QProgressBar的话就可以直接用自带的函数来实现。这次编写的进度条,提示信息的背景色也是和下面的进度颜色完全一致跟着变化的。...转载 2022-08-09 14:13:51 · 2578 阅读 · 0 评论 -
QString字符串常用编码格式转换
在用QT作为模块向其他进程发送消息时,消息内容带有中文,在接收进程中(MFC)收到的字符由于编码差异,在使用字符串时显示异常。QT编码时使用的是UTF-8格式,VC中使用的多字节(GBK),直接进行使用字符串会解析异常,如果得到的字符串保存到xml等文件中,还会导致文件编码格式发生改变。所以在传输时,需要将待传输的字符转换成目标平台相同格式的编码。......转载 2022-07-20 09:33:53 · 1882 阅读 · 0 评论 -
Qt之QString
QStrings;b=%2;输出“a=250;b=hello;b=22.22”转载 2022-07-19 23:22:16 · 992 阅读 · 0 评论 -
QT 关于QString的格式化(补零/进制转换)
QString的格式化,我们主要用到的是arg()函数,该函数有很多重载:QString arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) constQString arg(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) constQString arg(qulon转载 2022-05-21 13:29:01 · 4862 阅读 · 0 评论 -
Qml中的Text控件
环境Ubuntu16.04 + Qt 5.7.1Qml的Text控件如qt助手中描述的,Text可以显示纯文本和富文本。 例如,可以定义如下具有特定字体和大小的红色文本: Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color: "red" }1 2 3 4 5 6富文本使用HTML样式的标记定义: Text .转载 2022-05-21 09:42:18 · 2453 阅读 · 0 评论 -
QtAndroid详解(5):JNI调用Android系统功能(2)
在“QtAndroid详解(4):JNI调用Android系统功能(1)”中我们给出了一些简单的示例,演示了如何使用 Qt JNI 类库访问网络状态、系统资源目录、当前应用信息等等,这次呢,我们提供一些新的示例,这些示例可能更具实际意义。本文的示例包括:震动 让屏幕常亮 动态改变应用的显示方向(横屏、竖屏) 调节屏幕亮度 设置铃声模式示例介绍 图1 我们按照界面上的顺序,一个一个来看这些功能如何实现。源码分析...转载 2022-05-13 23:00:50 · 1808 阅读 · 1 评论