![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
工控软件
文章平均质量分 91
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
-
如何隐藏 Ubuntu 顶部状态栏
Hide Top Bar 扩展是隐藏 Ubuntu 顶部状态栏的最佳选择,它提供了包括「智能隐藏」在内的多种功能,可以在应用窗口触碰到屏幕顶部或全屏时自动隐藏顶部栏。Hide Top Bar 支持 GNOME 3.16 到 46 版本,包括当前最新的 Ubuntu 24.04 LTS 和所有基于早期 GNOME 版本的旧系统。3安装好后,返回「已安装」标签页,点击 Hide Top Bar 旁边的「齿轮」图标。Hide Top Bar 支持自定义,支持「智能隐藏」功能,当应用窗口全屏时自动隐藏顶栏。原创 2024-07-13 14:52:15 · 1048 阅读 · 0 评论 -
Linux:Ubuntu18.04下开机自启动QT图形化界面
如果这里启动失败了需要回头更改rc.local文件看看是不是有语法错误或者执行的脚本有没有问题。如果在里面运行了脚本记得给脚本也添加可执行权限(在脚本所在文件夹下打开终端)困扰了一天的时间,终于解决,好了,废话不多说,直接上干货。电脑重启后就会自动执行,跳出QT图形运行界面 ,成功!如果查看状态和我一样的话,就说明程序启动成功了。如果启动一切无误且状态正常的话使能开机自启动。原创 2024-07-06 08:51:09 · 883 阅读 · 0 评论 -
【正点原子MP157连载】第十九章 Buildroot根文件系统构建-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
答案肯定是有的,buildroot就是这样一种工具,buildroot比busybox更上一层楼,buildroot不仅集成了busybox,而且还集成了各种常见的第三方库和软件,需要什么就选择什么,就跟我们去吃自助餐一样,想吃什么就拿什么。因此在做产品的时候推荐大家使用buildroot来构建自己的根文件系统,当然了,类似buildroot的软件还有很多,比如yocto,一般半导体厂商会选择yocto来制作系统包,但是由于国内的网络环境,yocto编译起来会有很多问题!19.1 何为buildroot?原创 2024-07-04 09:54:38 · 759 阅读 · 0 评论 -
为RK3568或RK3288开发板创建交叉编译环境{采用amd64的ubuntu系统配置交叉编译arm64开发环境}(保姆级包括安装QT)超详细记录版
开发环境采用的是amd64 linux的系统,所以.run可以运行,我们在QT官网下载即可,版本自己选择即可,最好与后面要编译的qt对应起来。(9)这个hello.c建议放在/home/你的用户名/下面的文件夹内。(8)创建一个简单的c程序,用arm64编译器编译一下放到板子上运行。(1)将两个交叉编译器文件放在Downloads下面。(5)添加交叉编译器环境,路径在:/opt/都显示版本号说明没有问题。原创 2024-07-02 16:54:37 · 1424 阅读 · 0 评论 -
深入了解Qt 控件:Display Widgets部件(1) 以及 QT自定义控件(电池)
做一个电池控件,需要一个拖动条和一个进度条。不多说,直接上代码.h文件Q_OBJECTpublic:~Widget();private:.cpp文件//将拖动条设置为横向//设置拖动条范围//设置样式//拖动条每次值改变都会执行if(m_batteryBar->value()原创 2024-06-29 10:40:03 · 385 阅读 · 0 评论 -
OpenSSL EVP详解
EVP 提供了通用的加密和解密函数,可以用于对称加密和非对称加密。选择加密算法,创建相应的 EVP_CIPHER 结构。初始化 EVP_CIPHER_CTX 上下文。使用 EVP_EncryptInit_ex 或 EVP_DecryptInit_ex 初始化加密或解密操作。使用 EVP_EncryptUpdate 或 EVP_DecryptUpdate 处理数据。使用 EVP_EncryptFinal_ex 或 EVP_DecryptFinal_ex 完成加密或解密操作。原创 2024-06-27 12:50:37 · 1023 阅读 · 0 评论 -
环境篇-Windows下安装OpenSSL, 【QT】windows下OpenSSL的使用,RSA加解密
OpenSSL是一个功能丰富且开源的安全工具箱,它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。建议,不要拷贝到系统目录下,如果其他软件使用的OpenSSL版本与你安装这个版本不同,可能导致该软件无法使用。再次验证,查看OpenSSL版本正确。原创 2024-06-14 13:16:53 · 857 阅读 · 0 评论 -
Qt QQueue 详解:从底层原理到高级用法
在现代软件开发中,数据结构和算法扮演着至关重要的角色。它们为程序员提供了处理各种不同场景下数据的有效方法。QQueue(队列)是一种常见且实用的数据结构,它在许多应用中都发挥着关键作用。本文将简要介绍QQueue的重要性和简介。队列(Queue)是一种遵循先进先出(FIFO,First In First Out)原则的线性数据结构。在这种结构中,元素的添加(入队)和移除(出队)操作分别在队列的尾部和头部进行。这种特性使得队列在处理一些需要按顺序执行任务的场景中表现出优越性。原创 2024-06-09 22:31:01 · 780 阅读 · 0 评论 -
QT中为程序加入超级管理员权限
QT的一些文件操作,注册表的操作等,有些操作会无效,主要是因为没有对C盘的相关权限。通过为程序加入超级管理员权限可以解决此问题。第一行是为程序添加图标,第二行是增加超级管理员权限。原创 2024-06-08 08:35:14 · 920 阅读 · 0 评论 -
QT语言国际化 动态修改
2、对于需要翻译的文本,需要使用QObject::tr(“1111”).或QApplication::translate(“Widget”, “\346\227\213”, 0)包含,这要Qt的语言家功能才会将需要翻译的文本找到保存到ts文件中。5、生成的qm文件是在项目文件家中,而不是exe文件所在文件夹。4、工程的菜单: 工具 -> 外部 -> 语言专家 ->更新翻译(lupdate) 生成ts文件。6、工程的菜单: 工具 -> 外部 -> 语言专家 ->发布翻译(Release) 生成qm文件。原创 2024-06-03 09:32:00 · 592 阅读 · 0 评论 -
超详细基于Qt平台实现C/C++调用Matlab函数全流程
基于Qt平台实现C/C++调用Matlab函数有三种方式:(1)将Matlab函数封装成.dll文件,再在Qt平台上调用.dll文件实现;(2)将Matlab函数导出成.exe可执行程序,再在Qt平台上调用.exe可执行程序;(3)直接在Qt平台上调用Matlab Engin引擎,这种方法需要计算机上安装有Matlab软件。本文是通过第一种方式,将MATLAB代码转成C/C++代码和相关动态链接库进行实现的,其他两种方式具体可以参考:Qt调用MATLAB引擎混合编程。原创 2024-06-03 08:58:52 · 1683 阅读 · 2 评论 -
【Qt底层之内存管理机制】Qt 对象 父子关系、运行时机制与高效编程技巧
也就是说,在析构父对象–w时,会自动调用子对象btn的析构函数。当父对象析构的时候,这个子对象列表中的所有对象都会被析构,当析构子对象的时候,会自动从父对象的子对象列表中删除。按照这种形式排列就会形成一个对象树的结构,最上层是父对象,下面是子对象,在再下面是孙子对象,以此类推。值得注意的是,如果在构造时设置父对象为 NULL,那么当前实例不会有父对象存在,Qt 也不会自动析构该实例,除非实例超出作用域导致析构函数被调用,或者用户在恰当时机使用 delete 操作符或者使用 deleteLater 方法。原创 2024-05-30 21:15:30 · 740 阅读 · 0 评论 -
Linux之killall命令
我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。默认情况下,killall 会告诉你命令执行情况,但是,我们如果不关心它的执行结果,只想让它静默执行,只需加上-q选项即可,其中q表示quite。如果你在杀死多个进程时不太放心,担心把不该杀死的进程给杀死了,那么你可以使用-i选项。killall 命令是大小写敏感的,所以我们如果写错大小写,将无法正确杀死进程。原创 2024-05-30 09:09:10 · 909 阅读 · 0 评论 -
win10双网卡如何同时上内网和外网?
右键点击“以太网”,在打开的菜单项中,选择“属性”,点击选中“Internet协议版本4” - 点击“属性” - “高级” - 接口跃点数设置为“1”,各个窗口点击“确定”经常使用有线网访问外网,可以将有线网网络跃点数设置为“1”。如果经常使用无线网,那么就将无线网的跃点数设置为“1”。即哪个网络常用就设置哪个网络跃点数。原文链接:https://www.jb51.net/os/win10/806585.html。原创 2024-05-29 17:56:06 · 1075 阅读 · 0 评论 -
Qt加载一个启动界面
用Qt编写界面,有时候看到一些软件启动前回进行各种算法和内容的加载,一般来说有加载文件和加载各种库以及启动其他的文件。在Qt里面我们用QSplashScreen类就可以实现上面的操作,当然启动时最好进行多线程的操作。不过如果是一个简单的例子我们就不用进行那么复杂的操作。原创 2024-05-08 16:16:01 · 904 阅读 · 0 评论 -
浮点数的比较以及abs和fabs的区别
我们知道有的小数可能小数点后有很多为,比如无限循环小数、无限不循环小数,而计算机中的float和double能够表示的小数范围是有限的,因此浮点数在计算机中的存储是不精确的。使用abs求浮点数的绝对值是有问题的,使用fabs求整数的绝对值也是有问题的,所以在C语言中求浮点数的时候一定要选对函数。在C++中,abs和fabs都是用来计算数值的绝对值的函数,但它们之间存在一些重要的区别。fabs:对于浮点数,精度取决于具体的实现和平台,但通常足够用于大多数的数值计算。abs:通常用于计算整数的绝对值。原创 2024-03-02 13:16:26 · 2577 阅读 · 0 评论 -
基于Ubuntu环境Git服务器搭建及使用
将客户端公钥id_rsa.pub内容复制到服务端.ssh/下新建文件authorized_keys里,这样我们在拉取推送代码时,就不需要输入密码了。在服务器终端输入如下命令,输入两次密码后(比如密码也是:git),一路回车就创建好了。客户端:windows10_x64、Ubuntu20.04。无论是服务端还是客户端都需要先安装git。服务器:Ubuntu18.04。原创 2023-12-31 22:10:35 · 2098 阅读 · 0 评论 -
QString设置小数点精度位数
因为Qt又默认只保存前6位,所以数据就是123.457。所以对精度要求高的话,就不要直接1234567/10000.用除法。在Qt中,我们可以使用QString::number()函数将float类型转换为QString类型以便在界面上显示。该函数默认显示6位小数,但我们也可以通过设置第二个参数来控制小数点位数。QString使用toDoouble转化double类型,其实精度没有丢失,只是我们使用qDebug打印时出了问题。在上面的代码中,参数’f’表示将数值格式化为浮点数,2表示保留2位小数。原创 2023-12-31 17:25:42 · 1954 阅读 · 0 评论 -
linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。原创 2023-12-30 18:54:32 · 2044 阅读 · 2 评论 -
Qt图形视图框架:QGraphicsItem详解
我们在使用QGraphicsView框架的时候,经常需要自定义QGraphicsItem,并且需要实现Item的平移、改变大小和旋转的效果。接下来介绍他们的一种实现方式。原创 2023-11-15 09:34:57 · 947 阅读 · 0 评论 -
Qt界面设计时使各控件依据窗口缩放进行自适应填充的方法——使用布局、Spacer等控件
关于 Qt 布局管理,有专门的帮助文档页面Layout Management。本章的主要内容就是介绍布局管理的知识,Qt 设计师里面不仅有布局器的控件可以拖动使用,还可以在窗体里面选择控件,然后点击设计师上面的工具按钮自动添加布局器。本节首先大致介绍一下 Qt 设计师里面关于布局器的操作界面。Qt 的窗口主要内容包括: 布局的样式 , 基于UI界面设置布局 , 基于API设置布局。Qt 窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。原创 2023-11-11 17:00:23 · 8324 阅读 · 0 评论 -
CMake教程--QT项目使用CMake
其中,BasicUsageEnvironment, groupsock, liveMedia, UsageEnvironment都是live555项目的子模块,mediaServer是集成所有子模块打包成为可执行文件的部分。调用环境变量: $ENV{NAME}这种做法会导致项目里即便改了一处代码,也会编译所有代码,导致编译时间较长,不能很好利用增量编译,再说C/C++本身编译就很慢。变量的引用方式是使用${},在IF中,不需要使用这种方式,直接使用变量名亦可。在工程build目录下执行。原创 2023-11-11 15:17:23 · 2585 阅读 · 0 评论 -
QRadioButton、QCheckBox样式表
如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。就像QPushButton一样,单选框可以显示文本,以及可选的小图标。当然,也可以设置setExclusive(false)来关闭互斥,从而实现多选功能。上面,我们通过调用QButtonGroup的setExclusive(true)来设置按钮组中的单选框互斥。槽函数,用来判断当前点击的按钮,以及获取按钮组中各个按钮的选中状态。原创 2023-11-11 08:50:01 · 2199 阅读 · 0 评论 -
Qt中正确的设置窗体的背景图片的几种方式
2.做过Qt开发的朋友应该都知道,Qt的子窗体是会继承父窗体的属性的,这就证明了为什么父窗体的背景在子窗体中也会有,这个是对这个原因的一个非常合理的解释。那么问题来了,我们怎么才能做到子窗体不继承父窗体的背景呢?1.在QWidget中这种方法是不行的,如果你足够细心的话,你会发现使用同样的设置背景图片的方法,背景图片其实并没有发生真实改变,但是它的子窗体背景图片是会发生改变的。背景色设置和背景图片设置也是一样的道理,如果不想窗口中的部件颜色和主窗口一样,也是需要#MainWindow来设置限定范围。原创 2023-11-03 14:17:37 · 16466 阅读 · 0 评论 -
QT之多个界面相互切换 (stackedWidget控件)
QStackedWidget是一个堆栈窗口控件,使用QStackedLayout布局,可以填充一些小控件,但同一时间只有一个小控件可以显示。QStackedWidget类实现组件层叠,但它是一个组件,而不是一个容器。stackedWidget控件: 可以自由在多个widget切换,可以通过点击顶部菜单,显示不同界面,在实际开发中应用很广泛。- 将一个组件添加到容器的末尾,返回添加组件的索引;- 将组件添加到指定的容器位置,返回添加组件的索引;- 将索引为index的组件设为可见,是个槽函数。原创 2023-11-03 13:46:49 · 3540 阅读 · 0 评论 -
基于Qt 的可视化图片处理程序——图片的加载与保存
在 Qt 中,我们一种最常用的图片加载方式就是使用 QImage 库,此处我们通过 QImage 加载图片,之后通过加载到 QPixmap 中,最终显示在 Label 上。在保存图片之前,我们需要先提取要进行保存的目标图片,通过一种类似于截屏的方式 pixmap()->toImage() 对图片进行提取,然后缩放到原来的大小,最后进行保存。首先要确定,使用 Qt 中 QFileDialog 库中的 getLoadFile 进行选择文件。原创 2023-11-03 11:48:23 · 3408 阅读 · 0 评论 -
Qt控件 UI设计 QPushbutton、QToolButton、QMenu
1.信号和槽:qt的这个功能基本就是对c++回调函数的封装,使用起来比回调函数更方便,但是牺牲一些性能,会更慢一点。connect的参数我是这么理解的:谁,发出什么信号,想让谁,实现什么功能。2.区别:toolbutton更特殊一点,可以配置快捷键触发槽,一般只用图片做按钮配置放在toolbar内,就像下图编辑界面的功能选项,用toolbutton就很简单。new一个pushbutton,new一个QMenu,new几个QAction,将action的对象加入menu的对象,原创 2023-11-03 09:03:18 · 650 阅读 · 0 评论 -
如何使用ps制作ico图标文件
然后调整图片大小,因为不调整的话会出现无法保存为ico文件的情况,因为ico文件最大像素为64x64,也就是4096像素。点击图像,选择图像大小,或者直接使用快捷键Ctrl+Alt+I。在这里你可以调整抠出来的图片边缘羽化程度,以及设置背景图层。最后是保存为ico文件格式,选择文件,点击存储为,也可以使用快捷键Shift+Ctrl+S。如何使用ps制作ico图标文件。我这里将他设置为64x64像素。原创 2023-11-01 14:40:49 · 4482 阅读 · 0 评论 -
QSS 自定义QLineEdit
原文链接:https://blog.csdn.net/Staranywhere/article/details/107306276本文将通过简单示例介绍QLineEdit样式如何自定义。QLineEdit通用属性如下:borderborder-radiusmarginpaddingbackgroundcolorfontborder-imageQLineEdit特有属性如下:lineedit-password-characterThe QLineEdit password character原创 2023-10-28 10:15:49 · 448 阅读 · 0 评论 -
QWidget|QFrame设置背景透明且可以带有边框颜色
之前在项目中有个需求:视频播放窗口电子放大功能,需要在播放视频的QWidget上绘制一个可以拖拽的矩形框,但是单独的drawRect并不能获得焦点去拖拽。QWidget覆盖到该窗口上,将其背景设置为透明即可,但是设置透明之后,其底色的黑色无法消除,经多方CSDN博主的成果于一身,搞定了该需求。效果: 窗口整体透明,但窗口控件不透明,QLabel控件只是字显示,控件背景色透明;在该窗口绘制一个矩形框,为画刷填充一个任意的颜色,重点:将其透明度降为不为0的数值即可。同样在构造函数中,效果和第一种方法相同。原创 2023-10-27 19:53:23 · 2243 阅读 · 0 评论 -
Qt下实现支持多线程的单例模式
实现单例模式的代码很多。本文的单例模式实现代码是本人一直在工程项目中使用的,现拿出和大家交流分享。本文实现的单例模式,支持多线程,采用双重校验检索的方式,集成析构类,杜绝内存泄漏,稳定性好。使用C++/Qt的朋友们可以了解一下。不再废话,直接上代码。单例是一种软件设计模式,采用单例模式书写的类可以确保在一个工程中只有一个对象实例。再通俗点,就是一个类写好了之后,就不需要也无法再把这个类实例化了,因为写这个类的时候已经确保了有且仅有一个已经实例化的对象。这样不是很蠢么?原创 2023-10-27 15:20:38 · 976 阅读 · 2 评论 -
Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022
相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等。返回的函数指针我们可以保存起来,需要输出到控制台时进行调用。原创 2023-10-26 08:13:06 · 859 阅读 · 0 评论 -
Qt中的单例模式
单例模式是一种创建型设计模式,用于确保类只有一个实例存在,并提供全局访问点以便于其他对象获取该实例。在单例模式中,类只能实例化一次,并提供了一个静态方法或全局访问点来获取该实例。这样可以确保在整个应用程序中只有一个实例存在,并且可以通过该实例进行操作和访问。单例模式的特点包括:单一实例:单例模式确保类只有一个实例存在。全局访问点:通过静态方法或全局访问点获取单例对象,可以在任何地方访问该对象。延迟初始化:单例对象通常在首次访问时才会被创建,实现了延迟初始化的效果。原创 2023-10-26 07:55:58 · 1213 阅读 · 0 评论 -
Qt中的枚举变量,Q_ENUM,Q_FLAG以及Qt中自定义结构体、枚举型做信号参数传递
之前做一个比较大工程,核心数据里面有很多是枚举变量,需要频繁地使用枚举量到字符串和字符串到枚举量的操作,为了实现这些操作,我把每个枚举类型后面都附加了两个类似Enum_to_String()和String_to_Enum()的函数,程序显得很臃肿。这时候就非常羡慕C#或者java等兄弟语言,内核内置了枚举量和字符串转换的方法。原创 2023-10-25 08:40:38 · 1432 阅读 · 0 评论 -
生成二维码
QR码(全称为快速响应矩阵码;英语:Quick Response Code)是二维条码的一种,于1994年由日本DENSO WAVE公司发明。QR来自英文Quick Response的缩写,即快速反应,因为发明者希望QR码可以让其内容快速被解码。QR码使用四种标准化编码模式(数字,字母数字,字节(二进制)和汉字)来存储数据。QR码最常见于日本,为目前日本最流行的二维空间条码。QR码比较普通条码可以存储更多数据,也无需要像普通条码般在扫描时需要直线对准扫描仪。原创 2023-10-22 17:02:00 · 1173 阅读 · 5 评论 -
Qt判断文件夹路径、文件是否存在不存在则创建
1.用QFileInfo::isFile()方法。原创 2023-10-22 12:47:11 · 4042 阅读 · 1 评论 -
QT判断平台和生成版本设置输入目录
【代码】QT判断平台和生成版本设置输入目录。原创 2023-10-22 11:31:07 · 654 阅读 · 0 评论 -
QT使用MSVC编译时报错C2001: 常量中有换行符
2、使用中文字符常量时,用QStringLiteral修饰中文字符,格式如QStringLiteral(“中文字符”),这种方法必须在每次使用中文字符时都需要进行修饰,否则还是会出现错误,所以比较麻烦。1、将字符中的中文字符用英文字母或单词代替,这样解决的好处是代码规范,语言统一,缺点就是没有中文表达那样直接、清晰。在新电脑做一个简单的Qt项目时,在debug输出的时候,出现了C2001错误,提示“常量中有换行符”,却可以顺利通过编译,试了很久改了编码也不行,即便编译通过界面显示却会乱码。原创 2023-10-20 15:52:52 · 1725 阅读 · 1 评论 -
Qt开发之路--模块化设计.pri文件
对于QT项目,默认情况下所有的文件都是在同一个文件夹下进行开发的,当做一个项目规模相对较大的时候文件很多导致维护及其困难,所以pri对文件进行模块化开发至关重要,pri进行模块化无非就是将相同业务逻辑的代码放到同一个文件夹下进行管理。第三步:在新建的文件夹下新建 " .pri " 文件,新建.pri文件名称规则(文件夹名称+.pri),新建.pri文件后,手动添加内容,或者根据第五步添加。如果一个大点的项目,含有多个*.pro文件呢,这些pro需要有些共同的设置或需要的文件,这时就很有必要了。原创 2023-10-17 14:59:06 · 2677 阅读 · 0 评论 -
Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备
一般我们创建Qt项目工程的时候,都是直接把所有的项目,头文件和资源文件等全放入pro中,这样一来小的项目(只有少数几个文件)那种,你可能就会觉得没有什么,但是在一些中大型的开发项目当中,可能会有十几个,甚至几十个文件的开发项目中,我们看树形结构的文件时,就会感到很杂乱,pri文件的作用就尤为重要了。简单来说,pri文件就是把pro文件中的一部分放到pri文件中进行一个管理,类似头文件,进行分块管理,分担pro文件的一部分压力,这样一来pro文件看起来就不会显得很臃肿。创建pri文件的步骤。原创 2023-10-13 11:22:38 · 1228 阅读 · 0 评论