- 博客(223)
- 资源 (14)
- 收藏
- 关注
原创 我的创作纪念日
创作已经是我工作的一部分了,在日常工作学习时,我就会把CSDN打开,当笔记本使, 同时也是作为新的学习领域一种航向灯与工作方案参考航向。我在写博客的过程中,记录学到的新知识,也梳理了自己的学习思路, 也不断自己更有信心处理将来要做的事情。才不经意间, 发现已经有五年过去了, 可能都早已忘记了当初初心了。
2024-03-27 11:22:18 200
原创 Ping工作原理
ICMP 的全称是Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
2024-03-11 21:01:54 985
原创 ”QTimer“ 与 ”QThread“ 的爱恨情仇
通过如下设计, 主线程负责子线程开启与终止, 定时器开启与停止, 但是定时器是在子线程中负责创建。分别来进行如下情况测试, 并一一对如上进行验证说明。, 后来竟发现, 由于创建Timer子线程已经结束了,才会报如上错误。主要是讲解QTimer 与 QThread 结合时候, 容易出现各种各样警告, 如下。间接说明启动TImer时与创建QTimer线程不在一个线程, 当我很好奇为啥不报。说明定时器只能在已经存在被QThread开启的线程使用。目前来说经常遇到如上三条, 后面如有遇到我再补上。
2024-02-29 15:09:59 836
原创 windows注册表操作
注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据。此根键中保存的是默认用户(default),当前登录用户和软件(software) 的信息,其中DEFAULT子项是其中最重要的,它的配置是针对未来将会被创建的新用户的。Schemes:按事件分类列表。该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID。之相对应的应用程序。
2024-02-01 16:56:16 896
原创 QtCharts移植报错
后来依据实际需要, 要将此项目移植到windows + vs2019 + Qt5.15.2下, 然后编译项目过程中就产生了如下问题。参考这两位博客, 此类问题最终就是没找到对应正确的QCharts。我们可以通过如下思路解决QCharts某种变化过程中导致问题。刚开始是有点懵逼, 寻思linux能编译过, QCharts编译本身就是跨平台兼容的, 不应该出错才对。初步猜想可能是找到库位置不对, 导致release 版本下编译过程中, 找的qtchart不对。我的最终版本解决就是添加此。
2024-01-22 16:36:17 404
原创 窗口一片空白无法问题
我出现这个问题是在把unix下代码, 移植编译跑到windows下, 然后在windows下编译运行通过后, 发现窗口没有显示, 但是任务栏下方是有icon显示, 鼠标放上去hover还能显示对应的windowstitle.本人总结就是确保对应窗口构造函数一定能完成, 再次确保对应show相关属性透明度(不为0), geometry,postion在可见区域内, 以及是否对showEvent时间重构处理是否ok。窗口一片空白无法问题, 这个问题具体要依据实际情况。最终我出现此问题的解决方案是 属于第一种。
2024-01-02 20:05:15 424
原创 条码生成器与Zint使用
条形码(Barcode)一维码 和二维码(QR code)都是用于存储信息的图形化表示方式,通常应用于商品标识、库存管理、支付系统等领域。它们都是信息编码的一种方式,但它们的形式、编码方式、应用领域以及读取方式都有所不同。zint库的编译依赖于两个库:zlib和libpng,需要说明的是这两个库是编译才需要,使用时并不需要.zint库需依赖于zlib、libpng这两个库,所以一共需编译三个库,依赖关系如下图。可以保存条形码为图片格式的文件,bmp、png、eps、gif、svg、emf、tif。
2023-12-08 12:58:39 1014
原创 QPrinterInfo::availablePrinterNames()返回空列表
我出现这个问题是由于, 我在QtCeaotr运行时候是没问题的, 但是打包exe的时候程序却返回空列表.,刚开始还是有点困惑。解决遇到QPrinterInfo::availablePrinterNames()返回为空的问题。没有这个文件夹或者dll 导致windows 下没法调用底层库去查找设备。如果设备和打印机中显示时仍然有打印机, 但这个却返回空列表, 原因查找。匹配不匹配或者是否有这个文件夹。出现问题, 参考这篇博客。如果在运行程序路径目录下。
2023-12-07 19:40:53 606
原创 Qt设置应用程序字体
通用做法在qrc中添加字体资源,SourceHanSansCN-Medium.ttf, 然后在main函数中动态加载字体文件。如果后期要更换但这个文件过大的话, 建议改为动态加载绝对路径文件。Note: 一定要确保对应SourceHanSansCN-Medium.ttf 文件是正确的, 不然字体加载会返回-1, 无效。由于微软雅黑字体具有版权效应, 导致实际项目中需要load其他字体, 比如说应用程序默认字体为思源黑体-Mdeium黑度。
2023-12-07 19:32:00 868
原创 矢量图与位图区别
在实际应用中,这两种图像类型经常会结合使用,根据需求选择合适的图像格式。例如,在网页设计中,可以使用矢量图作为图标和Logo,而使用位图作为页面中的照片和复杂的图形。矢量图和位图是两种不同类型的图形图像,它们之间的主要区别在于存储和表示图像的方式,以及在不同应用场景下的优势和劣势。了解矢量图与位图区别。
2023-11-30 19:27:53 390
原创 _cdecl 与 _stdcal 区别 以及 extern “c‘ 作用
因为GetProcAddress仅是操作系统相关,可能会操作各种各样的编译器产生的dll,它的参数里的函数名是原原本本的函数名,没有任何修饰,所以一般情况下需要确保dll’里的函数名是原始的函数名。因为如果不用_declspec(dllimport)来说明该函数是从dll导入的,那么编译器就不知道这个函数到底在哪里,生成的exe里会有一个call XX的指令,这个XX是一个常数地址,XX地址处是一个jmp dword ptr[XXXX]的指令,跳转到该函数的函数体处,显然这样就无缘无故多了一次中间的跳转。
2023-11-11 18:58:48 152
原创 Q_GLOBAL_STATIC宏
用于原子访问全局和静态变量的新加载和存储操作。load操作可以保证多线程环境下全局变量和静态变量的原子加载,避免数据竞争和线程不安全问题。
2023-11-05 18:35:49 169
原创 QSqlTableModel结合使用数据库心得
如果创建了多个数据库连接,请在调用addDatabase()时为每个数据库连接指定一个唯一的连接名称。使用带有连接名称的database()来获取该连接。使用带有连接名称的removeDatabase()来删除连接。如果您试图删除其他QSqlDatabase对象引用的连接,QSqlDatabase将输出警告。使用contains()查看给定的连接名称是否在连接列表中。
2023-11-02 20:18:00 355
原创 基于折线图对QChartView了解
图表中,一般都有 X、Y 坐标轴,复杂一些的还带有 Z 轴。对应到 Qt 的图表也有 X、Y 轴对象。但是今天,我们先不展开介绍。如果我们不创建轴坐标对应的对象,可以使用 Qt 的默认轴对象。后面我们会介绍用法。
2023-10-22 16:12:39 198
原创 了解Qt QScreen的geometry ,size
screen availableGeometry: QRect(0,0 1920x1040) 也是。而实际的screen geometry: QRect(0,0 1920x1080) QSize(1920, 1080), 与物理size没有改变。只有充分知道QScreen相关属性, 才能更好写出多屏下相关处理操作。了解qt 对于屏幕的size, geometry含义, 更能有效实现最大化, 向下还原逻辑操作。目前我有两个屏 ,1920x1080, 3840*2160.
2023-10-18 10:51:04 353
原创 Q_FLAG与Q_ENUM
宏Q_ENUM会向元对象系统注册一个枚举类型, 它必须放在具有Q_OBJECT或Q_GADGET宏的类中的枚举声明之后(不然放在前面编译器会报错)。Q_ENUM宏引入自Qt5.5版本,之前版本的Qt请使用Q_ENUMS宏,但Q_ENUMS宏不支持QMetaEnum::fromType()函数(这也是Q_ENUMS被弃用的原因)如果要将QFlags用于自己的枚举类型,请使用Q_DECLARE_FLAGS()和Q_DECLARE_OPERATORS_FOR_FLAGS()。此宏向元对象系统注册枚举类型。
2023-10-17 19:27:40 175
原创 逻辑像素与物理像素引发学习型探索
比如我的电脑尺寸是 15.6 英寸,注意各种电子设备的屏幕尺寸指的是屏幕斜对角线的大小,不然你想,屏幕不也是个矩形吗?上述的一个个的小格子被定义为一个单位,叫做 像素 ,2像素就是指占据了两个小格子的大小,当然,我们描述一个图片占的小格子数总不能一个个地数小格子吧,图片是矩形,因此常常描述一个图片尺寸时就说多少乘多少像素,像素就是小格子,比如上面的这个图片的尺寸就是 300 * 300 像素,也就是说该图片的长、宽都有300个小格子,该图片一共占 300 * 300 = 90000 个小格子。
2023-09-26 20:36:04 214
原创 Qt-QSlider样式
这里需要注意的是, 如果设置groove槽左右两端有圆角, 其实更应该要设置的是add-page, sub-page要有圆角。可以设置各种各样好看的QSlider, 这些离不开样式设置。QSlider 通常有如下三个部分构成。其下对应的qss样式如下。
2023-08-07 20:09:40 1025
原创 判断两个 IP 地址是否在同一个局域网中
如何判断两个 IP 地址是否在同一个局域网中, 核心知识点是出于一个网络号, 主要是通过本身ip 与 所处的子网掩码进行 & 计算处理是否处于同一个局域网中(在。规则里面,IP地址与子网掩码做与运算)。
2023-07-07 19:13:14 2234
原创 bluetooth
这位国王因两件事留名于史,其一是在公园958年统一了丹麦和挪威,其二是在其死后,其牙齿呈现出暗蓝色的颜色,因而得名蓝牙为绰号。主要用于移动互联和健康医疗,如鼠标,键盘,遥控鼠标(Air Mouse),传感设备的数据发送,如心跳带,血压计,温度传感器,体重秤,健康手环等。传统蓝牙API 可以同时扫描出 传统蓝牙 和 低功耗蓝牙 ,而低功耗蓝牙API 则只能用于扫描 低功耗蓝牙。人们日常使用的蓝牙,是在1996年由英特尔、爱立信和诺基亚共同发起而成立的联盟,一般分为经典蓝牙,低功耗蓝牙, 双模蓝牙。
2023-07-05 20:29:12 207
原创 Qt实现文件反射
然后,Qt 将使用void *QMetaType::create(int type, void *copy)和 QMetaType::destroy(int type, void *data)复制并销毁参数,其中 是使用参数的类型名称int type 获得的,如 moc 提供的。第一次调用该函数时,它将调用 QMetaType 中的某个内部函数,使用宏中指定的名称来注册并分配该类型的元类型 id。对于 QtCore 中的内置类型,每个元类型函数基本上都是一个开关,每个类型都有特殊的代码。
2023-06-24 14:53:13 490
原创 树莓派4B连接不了产品开的热点
如果输入lsusb 没有查看到 0 bda : 1 a2b有新增, 说明没有识别到可以进行如下尝试:1: 确保编译ko加载到内核中通过对比lsmod查看已经加载模块是否包含有8821cu, 有的话说明已经加载了Ubuntu20.04 系统安装USB无线网卡 TL-WDN5200免驱版 安转失败不显示WiFi的一种解决方案2: 基于已经ko加载大内核中, 如果还是不识别, 可能把usb 模式switch, 可能识别为U盘存储模式。
2023-06-11 15:38:49 1211
原创 widget与window区别
widget”(窗口部件)是 GUI 中的一个组件,是 GUI 元素的基本单元,可以包括按钮、文本框、滚动条等。Widget 可以响应用户的操作(例如点击、拖动等),并可以通过编程方式更改它们的属性(例如文本、背景颜色等)。“window”(窗口)是 GUI 中的一个独立区域,它可以包含其他的 GUI 元素(如按钮、标签、文本框等)和布局。在操作系统中,窗口是桌面应用程序的主要组成部分,它可以打开、关闭、最小化、最大化和移动等。通常情况下,窗口具有标题栏、边框和控制按钮等元素。
2023-05-07 19:53:47 508
原创 趣谈implicit instantiation of undefined template
include 对应的 template 结构。包括QList, 以及它包含的对象。因为QList, QVector 它们都是模板类, 需要具体实例化才能使用。为implicit instantiation of undefined template 类型提供问题思路参考。其实不然, 这篇虽然结局了, 但是根本问题不是这,他自定义的两个类都没有继承自QObject ,, 未定义的说明找不到, 在头文件出一定要。这篇博客思路, 说是增加。
2023-03-17 10:26:38 3416
原创 git 之回到强行将本地分支回退并推到远程分支
有时候我们不小心将某个分支推到远程后, 发现远程别人的拉了你的分支会出现一些问题, 导致我们不得不回退到某个安全节点。
2023-03-15 14:42:51 1667
原创 趣谈QProcess未能打开外部程序问题
在程序中的目录都是相对于工作目录而言的./xxx.exe 就意味着要在工作目录中去找, 而我是把这个放在exe执行目录(程序运行目录)。如下设置exe执行目录与工作目录 working directory 保持一致。当时我写了一个demo 想要验证下程序去跑标定, 结果没起来, 最终发现是路径不对, 导致没起来。这篇博客由来是由于当时QProcess去调用外部小工具, 结果发现按照通用接口写入是。最终问题在于程序执行目录与当前工作目不一致。很明显在demo中他们相差了一个目录。结果发现都对应小工具没起来。
2023-03-12 16:20:42 1199
原创 raspberry安装ffmpeg以及扩展了解
FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。
2023-03-07 13:23:33 881
原创 raspberry pi播放音视频
是 POSIX 操作系统的声音服务器系统,这意味着它是您的声音应用程序的代理。了解的思路是安装 gstreamer1.0, 然后ffmpeg, 单独下载qt源码进行安装编译 进行对应配置说明设置, 但由于本人比较懒, 这个就取消了,但最终也没怎么解决, 后续再看看验证此方法, 或者读者有更好方法, 或者已经验证此方法可行, 也请麻烦告知一下, 互相学习。alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。
2023-03-05 16:58:28 965
原创 删除文件返回错误趣谈
有些时候我们看到文件被删除时, 如果返回remove error, 此时应该从这两处分析, 如果文件所属的权限能够被删除,那就要注意该文件是否在程序中其他资源占用, 比如说open之后 没被释放。我们是能够打开对同一个文件进行多次打开, 但是删除时, 如果文件handle被占用, 是不能删除此文件的, 这一点要特别注意。主要是为了解决一些应用程序再删除文件返回失败问题分析。
2023-02-09 20:32:47 105
原创 C++因使用模板导致出现无法解析的外部符号
我们知道一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件。不同的cpp文件是分开编译的。在函数模板所包含的cpp文件中,如果没有对此模板进行实例化的过程,所编译的obj文件没有对类模板进行实例化,主函数的cpp文件也不会对此类模板进行实例化。在编译过程只有在同一个cpp文件及其include的文件中有引用函数模板的过程,函数模板才会转化成对应的函数。
2023-01-18 18:55:58 380
原创 windows避免程序休眠
若要禁用离开模式,应用程序使用 ES_CONTINUOUS 调用 SetThreadExecutionState 并清除ES_AWAYMODE_REQUIRED。若要在电源托管计算机上正确运行,传真服务器、应答计算机、备份代理和网络管理应用程序等应用程序在处理事件时必须使用 ES_SYSTEM_REQUIRED 和 ES_CONTINUOUS。多媒体应用程序(如视频播放器和演示文稿应用程序)在长时间显示视频时必须使用 ES_DISPLAY_REQUIRED ,而无需用户输入。
2023-01-14 17:18:15 860
原创 趣聊无法为处于不同线程中父类创建子类
由运行结果看出 thread2(ThreadTest2)属于主线程(QThread(0x2675852480)),我们尝试在 QThread(0x8d9d4ff7a8)线程中为属于(QThread(0x2675852480))的 thread2 对象创建子对象。按字面意思可以理解为: 不能为属于不同线程的父对象创建子对象。也就是当前线程与父对象属于的线程不是同一个线程, 我们不能为此创建该子类。初次见到, 我们为此经常感到头疼。在类中如下声明子对象成员时。
2022-12-30 14:22:32 185
原创 常用图像像素格式 NV12、NV2、I420、YV12、YUYV
YUV 4:2:2 采样,意味着 UV 分量是 Y 分量采样的一半,Y 分量和 UV 分量按照 2 : 1 的比例采样。从映射出的像素点中可以看到,四个 Y 分量是共用了一套 UV 分量,而且是按照 2*2 的小方格的形式分布的,相比 YUV 4:2:2 采样中两个 Y 分量共用一套 UV 分量,这样更能够节省空间。YUV 码流的存储格式与其采样方式密切相关,主流的采样方式有三种:YUV 4:4:4(YUV444),YUV 4:2:2(YUV422),YUV 4:2:0(YUV420)。
2022-12-29 18:55:13 2754
原创 Git知识型整理
目的了解Git, 以及工作原理, 能更好让自己解决在仓库中遇到的各种问题。git什么是git分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。很多版本管理工具如:sourcetree, gitLab, tortoise等等, 针对这个目前只是说说git。四个术语Workspace : 工作区Index / Stage : 暂存区Repository : 本地仓库Remote : 远程仓库这四个是对应git管理过程中所处的4个阶段。如图图解git工作流程从修改
2022-12-26 11:11:53 854 1
qT-QTimer-QEventLoop-QThread 基础知识梳理与常见error分析
2024-04-03
qtbase-MSVC2015-Windows-Windows-10-X86-64-debug-symbols.7z
2024-03-08
qt-everywhere-src-5.15.2.zip
2024-03-08
整理windows常用资源
2024-02-07
bluetooth 蓝牙
2022-06-05
windows 10实现扫描周围无线wifi设备列表,连接指定wifi
2022-06-05
ImageCropperLabel显示裁剪图片 ImageCropperDialog作为裁剪交互框
2022-06-05
系统键盘相关介绍及windows API的整理--刘男亚.docx
2019-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人