上位机框架 C++、 QT
文章平均质量分 84
QT/C++
高亚奇
医疗仪器软件、上位机开发者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
QT 开发经验分享
现如今有不少的兴起的后起之秀,比如Electron、Flutter等等,而这些新奇的语言他们的强项就是界面的开发,我用Electron写出来的界面效果可以任意吊打我之前写过任何一款Qt界面,不是一个量级的碾压,并且开发成本很低,这就是我不建议去深入Qt界面样式的原因,拿自己的弱项碰他人的强项,反向田忌赛马,花很多时间和精力放到一个收益很低的方向,是很吃亏的事情,如果说Qt的其他内容都会的差不多了,然后再来学学。性能上的卓越这点没什么好说,秉承了C++的优良血统,脚踩其他语言,众所周知,原创 2025-02-05 14:45:38 · 1333 阅读 · 0 评论 -
QByteArray::fromHex() 、QByteArray::toHex()原理及使用
第二步,以“31”为例,fromHex表示从16进制。所以把31当做16进制数,转成十进制数是3*16+1=49. 结合ASCII码对照表,十进制数49对应数字1,把数字1当做字符“1”。有时候从网络获取到一串的mac地址却是没有使用":"或空格分隔开来,未免会让用户阅读困难起来。变量test1用8个字符保存“31323235”,每个字符8位,两个字符16位。QByteArray::fromHex转换时,每16位作为转换单元。第一步,把“31323235”分成4组,“31”,“32”,“32”,“35”原创 2024-07-30 16:02:21 · 2358 阅读 · 0 评论 -
串口通信中QString与QByteArray的互相转换
QByteArray在串口通讯中经常被使用,通信处理过程中,经常会涉及到数据格式的转换,有一定必要较为全面详细的对QByteArray数据转换与处理部分进行阐述。本文通过以下几个部分加以介绍在使用串口发送数据时可以选择字符串发送或者十六进制发送,关于两者的区别,需要从计算机存储数据的格式说起。在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。原创 2024-07-30 16:40:50 · 3404 阅读 · 0 评论 -
Windows和Linux的换行符CRLF/LF(\r\n,\n)
CR是Carriage-Return的缩写,即回车;LF是Line-Feed的缩写,即换行。CR和LF是在计算机终端还是电传打印机的时候遗留下来的东西。电传打字机就像普通打字机一样工作。在每一行的末端,CR命令让打印头回到左边。LF命令让纸前进一行。虽然使用卷纸的终端时代已经过去了,但是,CR和LF命令依然存在,许多应用程序和网络协议仍使用这些命令作为分隔符。Linux(unix) 和 mac 默认使用 "\n" 作为换行符;Windows 默认使用 "\r\n" 作为换行符;原创 2024-07-04 10:50:06 · 1405 阅读 · 0 评论 -
Qt:编译器、MSVC、Mingw、dll调用
到底选择哪个版本,MinGW 比较方便,配置易上手适合初学者,MSVC功能强大,适合进阶,但是具体项目上要根据依赖的第三方库选择版本。如果你的第三方库是msvc的,能可能就必须msvc,如果第三方库是mingw的可能就必须mingw。跨平台开发的话,用的库基本上一定是Linux能用的库,而Linux能用的库一定是在mingw下支持会比较好。(mingw甚至能 include unistd.h 之类的Linux专用头文件),那就优选mingw。注意Qt版本:msvc和MinGW版本的区别。原创 2024-05-07 13:13:49 · 3844 阅读 · 0 评论 -
QT C/C++ 使用 CryptoPP加密解密
CryptoPP 是一个开源的密码学加密库,提供了大量的密码学算法和功能,包括对称加密、非对称加密、哈希函数、消息认证码 (MAC)、数字签名等。这里重点介绍一下对称加密算法(AES)的使用和注意事项。原创 2024-05-06 17:10:16 · 4111 阅读 · 0 评论 -
Qt JSON详解三(读写实例)
QT解析Json格式文件类QJsonValue。原创 2024-04-30 11:14:01 · 1407 阅读 · 0 评论 -
Qt JSON详解一
JsonValue包装了Json支持的数据类型,JsonValue相当于一个箱子,可以重载JsonValue得到不同数据类型。原创 2024-04-30 11:02:47 · 2358 阅读 · 0 评论 -
Ubuntu 20.04安装Qt5
您需要安装用户界面和命令行工具来创建和运行Qt项目。qtcreator IDE在默认的Ubuntu apt存储库中可用。上没有预装构建必备模块,请安装它们。这些实用程序允许用户在Ubuntu中安装和使用C++核心软件包。使用以下“apt-Update”命令更新系统存储库包列表。建议安装Qt项目示例和文档,以实现更复杂的项目功能。步骤3:在Ubuntu 20.04上安装Qt Creator。步骤5:在Ubuntu 20.04上安装Qt项目示例和文档。步骤4:在Ubuntu 20.04上安装Qt 5。原创 2024-04-23 13:10:55 · 1839 阅读 · 0 评论 -
Qt 国际化 翻译文件(.ts .qm文件)生成与使用
在代码中需要翻译的文本的都需要用下面的方式使用括起来。UI 文件中需要翻译的文本,qtCreator 会自动处理。原创 2024-02-23 13:38:22 · 6157 阅读 · 0 评论 -
Qt Creator 常用快捷键
快速添加方法实体(.cpp)声明。代码右缩进(可多次Tab右缩进)代码左缩进(可多次Tab左缩进)剪切当前行,可以当做删除用。在函数声明与实现之间切换。快速切换已打开的文件原创 2024-01-17 13:26:53 · 2662 阅读 · 0 评论 -
QT 、MFC、WinForm、WPF 图形界面 简介与选择
WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得没法用了,比如 代码过于复杂,编译太慢,出错不好调试等问题难以解决。而且封装得也不完全,还是随处可见 HWND HDC之类的东西。用途主要是写一些很小的程序,或者作为其他UI框架的后端实现部分,比如我写过一个小框架用来做安装卸载程序,非常小,其中创建管理窗口部分是用WTL的。原创 2024-01-26 14:35:29 · 3499 阅读 · 0 评论 -
如何才能学到Qt的精髓
这个问题也被讨论很多了,这里只谈一点,C++的设计目标是面向对象的语言,它不仅提供了对象的定义和构建的方式,也定义了对象间的关系,比如 继承 派生 聚合,但是它没有提供对象间通信和共享数据的方式,这个缺点在一般程序的开发上不算个大问题,我们可以自己简单实现,但是对于GUI开发,这个缺点就被放大了很多倍。GUI上的对象实在太多,窗口是对象,布局是对象,定时器是对象,而且对象间有错综复杂的关系,通信和数据交换非常频繁,比如按钮按下要通知父窗口或容器对象,滚动条变化了要通知列表对象。那么发消息行不行呢?原创 2024-01-25 15:44:04 · 1014 阅读 · 0 评论 -
Qt 程序发布
当然有可能有些 dll 不是我们需要的,例如下面的 D3Dcompiler_47.dll,为了使发布程序尽可能的小,可以把这些 dll 一个一个删掉,再打开 exe 程序,看哪些 dll 是删掉后就打开不了程序的,保留下来,剩下的删除即可。(4)选择应用程序的主执行文件,也就是你编译生成的 exe 文件,下面点击 “Add folder ”,把所有你的程序运行需要的 dll 和资源以及配置文件放在一个文件夹里,选择这个文件夹,然后点击下一步;可以直接使用编译,也可以自己重新编写,下面贴出生成的脚本代码。原创 2024-01-17 14:26:48 · 1014 阅读 · 0 评论 -
Qt 内存泄露问题总结
Qt 内存管理机制:Qt 在内部能够维护对象的层次结构。对于可视元素,这种层次结构就是子组件与父组件的关系;对于非可视元素,则是一个对象与另一个对象的从属关系。在 Qt 中,在 Qt 中,删除父对象会将其子对象一起删除。C++ 中 delete 和 new 必须配对使用(一 一对应):delete 少了,则内存泄露,多了麻烦更大。原创 2024-01-17 14:19:53 · 1658 阅读 · 3 评论 -
Qt 性能优化 现象和解决方案
在最近的项目中,发现执行 Qt 程序时,有些情况下的 CPU 占用率奇高,最高高达 100%。项目跑在嵌入式板子上,最开始使用 EGLFS 插件,但是由于板子没有单独的鼠标层,导致鼠标移动起来卡顿,很不流畅,所以换成了 LinuxFB 插件。但是如果 CPU 占有率高了的话,也会导致鼠标卡顿,因为鼠标是由 Qt 应用程序层负责绘制的,如果应用程序 CPU 占有率高了的话,也会导致鼠标绘制缓慢,导致鼠标卡顿。原创 2023-12-14 13:49:28 · 3164 阅读 · 0 评论 -
Qt 代码编译语法错误 UNIX(LF) Windows(CRLF)
下载github上的qt工程,拿回来一编译出现了N多错误,但是工程明明是正确的,没有什么特殊的配置设置,但是就是几乎所有的代码都在报错。类似与:error: C2059: 语法错误:“namespace”想了一下,应该不是代码内容的问题,那就只能出在格式上,首先查看代码的编码格式,是UTF-8没错,不是编码问题。这就奇怪了,查看系统设置里面,发现除了编码格式,还有换行符的设置。查看了一下,果然下载的内容默认设置的是UNIX的LF格式,全部改成CRLF后,编译正常。原创 2024-01-08 15:29:34 · 1457 阅读 · 0 评论 -
Qt常见中文乱码问题解决方法总结
默认编码错误这种情况是Qt的编码不正确,没有使用UTF-8,但是我觉得大多数人都不是这种,现在Qt在安装之后似乎默认就是UFT-8,若是这种情况,可以参考以下解决方案对默认编码进行一个修改:在Qt上方工具栏中找到 工具-》选项 并单击在更改了编码之后,能解决因为编码无法解析汉字而导致的乱码问题。但是在大多数时候并不是这个情况,下面的情况更常见一点。原创 2024-01-12 11:02:55 · 16526 阅读 · 0 评论 -
Qt QCustomPlot 图形库详解
在构建曲线图之前,我们先理一理曲线包括哪些元素和功能,然后再看如何用代码实现。打开Excel表,我们画一个曲线,如下图所示:曲线元素对于曲线的组成元素,可以做个简单总结。原创 2024-01-11 17:47:13 · 2641 阅读 · 0 评论 -
C++语言编程规范
如果 你的头文件包含了其他头文件, 这些头文件的任何改变也将导致那些包含了你的头文件的代码重新编 译。空行起着分隔程序段落的作用。风格为什么要把左大括号置于行尾,我的理解是代码看上去比较简约,想想行首除 了函数体被一对大括号封在一起之外,只有右大括号的代码看上去确实也舒服;构造函数中只进行那些没有实际意义的(对于程序执行没有实际的逻辑意义) 初始化,可能的话,使用 init() 方法集中初始化有意义的数据。本节论述的共性规则是被大多数程序员采纳的,我们应当在遵循 这些共性规则的前提下,再扩充特定的 规则。原创 2024-01-10 11:05:26 · 817 阅读 · 0 评论 -
QT读写CSV文件、打开文件夹返回文件名
三、QT读CSV文件,代码如下。一、打开文件夹返回文件名。原创 2024-01-16 16:24:49 · 1080 阅读 · 0 评论 -
Qt 图片绘图类 QPixmap、QImage、QPicture
绘图设备是指继承 QPaintDevice 的子类,你可以使用 QPainter 直接在其上面绘制图形,Qt 一共提供了四个这样继承 QPaintDevice 的绘图设备类,分别是:QPixmap、QBitmap、QImage和 QPicture。QPixmapQBitmapQImageQPicture下面我们将分两部分介绍这四种绘图设备。原创 2023-12-14 09:04:08 · 1027 阅读 · 0 评论 -
Qt样式表二:Qt样式表详解
Qt样式表是一个可以自定义部件外观的十分强大的机制,可以用来美化部件。Qt样式表的概念、术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CSS)的启发,不过与CSS不同的是,Qt样式表应用于部件的世界。使用Style Sheets时,所有的部件都被视为有四个同心矩形的盒子(box):边缘矩形(margin rectangle),边框矩形(border rectangle),填充矩形(padding rectangle)和内容矩形(content rectangle)原创 2023-12-13 13:51:42 · 1317 阅读 · 0 评论 -
Qt样式表一:QSS名词解释大全
Qt 的样式表主要是受到 CSS 的启发,通过调用 QWidget::setStyleSheet() 或 QApplication::setStyleSheet(),你可以为一个独立的子部件、整个窗口,甚至是整个应用程序指定一个样式表。样式表由影响窗口部件绘制的样式规则组成。这些规则都是普通文本。由于在运行时会解析样式表,所以可以通过定制样式表的方式来尝试设计不同的 Qt 应用程序。原创 2023-12-13 13:30:07 · 1316 阅读 · 0 评论 -
Qt JSON详解二
JSON( JavaScript Object Notation,对象表示法) 是一种轻量级的数据交换格式。它基于 ECMAScript 的一个子集。许多编程语言都很容易找到J SON 解析器和 JSON 库。JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。不同语言的不同 json 库对 JSON 标准的支持不尽相同,为了能让尽可能多的 JSON 库都能正常解析和生成 JSON ,定义 JSON 的规范很重要,推荐一个 JSON 规范《Google - JSON风格指南。原创 2023-12-13 13:19:02 · 939 阅读 · 0 评论 -
Qt 窗口部件 QMainWindow、QWidget、QDialog 使用原则
显示模态对话框最常见的方法是调用其exec()函数,当用户关闭对话框,exec()将提供一个有用的返回值,并且这时流程控制继续从调用exec()的地方进行。对于进度对话框来说,调用setModal(true)是非常有用的,用户必须拥有与其交互的能力,例如:取消长时间运行的操作。如果隐藏对话框后调用show()函数,对话框将显示在其原始位置,这是因为窗口管理器决定的窗户位置没有明确由程序员指定,为了保持被用户移动的对话框位置,在closeEvent()中进行处理,然后在显示之前,将对话框移动到该位置。原创 2023-12-01 16:22:25 · 1021 阅读 · 1 评论 -
Qt License
LGPL 所做的工作是,它保证了用户能够有这样一种能力:修改你使用 LGPL 库函数的方式(那些封装器就是你使用 LGPL库的方式,那些已经开源了),重新编译这些代码,然后重新对程序进行连接(连接所需要的目标文件也是包含了的,这是第4条规定的),就可以得到一个新的可执行程序。尽管没有十分的确定,但是这里所说的理解基本也是八九不离十的了。简单来说,使用 GPL 版本的软件一定还是 GPL 的开源软件,无论是使用了 Qt 的程序代码还是修改了 Qt 库代码,都必须按照 GPL 来发布,这是 GPL 的传染性。原创 2023-11-24 09:19:35 · 2230 阅读 · 1 评论 -
Qt 简介
Qt 是一个跨平台的 C++ 应用程序开发框架。它提供给开发者建立图形用户界面所需的功能,广泛用于开发 GUI 程序,也可用于开发非 GUI 程序。使用 Qt,在一定程度上你获得的是一个 “一站式” 的解决方案:不再需要研究 STL,不再需要 C++ 的 <string>,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。Qt Quick 是在 Qt4.7 中被引进的一项技术。原创 2023-12-13 13:01:57 · 230 阅读 · 0 评论
分享