- 博客(79)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 OpenKylin文件管理器界面层级切换问题
QApplicationPrivate::notifyActiveWindowChange接口中判断QWidgetList *QApplication::popupWidgets,如果不为nullptr,不会执行QApplication::setActiveWindow(这个接口的调用会激活窗口)的,不算是控件功能类的,所以Qt源码中的控件类代码不需要进行排查(其实这一步还是耗费了一些时间,但没有什么收获,就不展开了),找了几个位置的代码,注释掉之后发现没有什么变化,应该不是应用代码的问题。
2025-05-27 19:11:23
728
原创 zlib设置交叉编译
-prefix的作用是 : 编译的时候用来指定程序存放路径。下面是配置和编译脚本,编译环境是采用的clang。本笔记用的zlib版本是1.2.11版本。文件,可以得到配置参数。
2025-05-08 08:49:33
156
原创 华为L420Qml在wayland环境下崩溃问题
结果,天无绝人之路,其中一个示例可以正常关闭,而它解决的方法是设置qt环境变量,代码旁还有注释,与这个bug有关。这个问题当时对我来说是一点思路都没有了,毕竟直接去排查底层渲染模块的代码是很难的,我一个人技术有限。应用同事进行了排查,发现是libGLESv2库的问题,卸载了包含此库的包后就不会崩溃了。我也咨询了熟悉wayland的同事,他认为不是wayland的问题,日志中没有报错信息。于是我就下载了qt的一些示例代码,看看有没有类似的示例,在上面运行一下看看效果。设置软件渲染去规避这个问题。
2025-04-29 14:12:12
287
原创 插件热更新后界面不更新问题
知道了可能会产生的原因,但不知道哪部分代码导致的,这就很难受,只能祭出二分法删代码来确定,发现QDBusInterface::call会导致NODELTE,最后还是在社区上了解到,QDBus模块中有使用内联函数。我只能独自思考,在考虑到跨模块引用其他符号可能到导致NODELETE时,我突然想到linux下默认符号是不隐藏的,主程序是我实现的,就是调用了一个导出类的接口,没有别的,也许加载库时用某些底层的东西引用了吧。总之,我想到了使用g++编译参数隐藏不需要导出的符号,解决了这个问题。
2025-04-25 15:54:23
337
原创 QTextEdit滚动区域失效问题
出现问题的操作系统: kylin V10 SP1对照操作系统: ubuntu24.04qt版本: 最新版本的qt6代码 commit id 7cf49085eb 2025-4-4硬件设备: 笔记本需要使用自带的触摸板。
2025-04-11 14:31:13
161
原创 程序界面无法拖拽到4K副屏问题
1. 如果在代码设计之初就能想到扩展4k副屏的需求,那就最好了,但是很少有人能想到2. 代码实现的不好,什么events函数都有,都要自己实现,还没实现好,这样还影响排查3. 使用方法要用新的,过时的尽快更新4. 多屏幕显示,要注意分辨率和缩放率的不同。
2025-03-24 10:21:37
600
原创 qt5编译环境配置及编译命令-可生成wayland和xcb库
下面的脚本在兆芯版kylin上试过,如果是本地编译,arm版应该也没有问题。a. 如果执行脚本安装有问题,读者可以拷贝命令多次安装。b. 建议在虚拟机环境下进行。
2025-02-17 16:59:02
431
原创 继承QLineEdit类实现自动补全功能
但是在开发过程中发现,输入的字符串如果匹配那么QCompleter类会弹窗显示匹配项,如果输入的字符串不匹配则QCompleter类会关闭弹出(这点我也倒是能理解,没有弹窗就表示没有匹配项)。原本考虑继承QLineEidt类并增加自动补全类,后面发现其实在QLineEdit + QCompleter的基础上再修改一下就可以达到上面的效果。QlineEdit类本身是没有自动补全功能的,可以使用QCompleter配合实现功能。然而界面设计师认为应该在没有匹配项时,弹窗显示内容提示用户,增强与用户的交互。
2025-02-09 22:25:11
252
原创 QQuickWidget嵌入界面后拖拽界面有黑边
问题如视频所示,当界面中存在QQuickWidget控件时,使用鼠标拖拽缩放界面会导致界面出现黑边,应用同事怀疑QQuickWidget控件的问题。经过考虑决定不优化QQuickWidget内部实现(因为其他笔记本上没有复现),降低资源消耗,实际上我也没能力修改,所以。在实际排查中发现,存在拖拽控件时可能会导致拖拽时界面出现黑框,禁用了拖拽控件就没有,在此记录一下。当时在使用后我有一个疑虑,为什么调用。注意界面右下角状态的拖拽控件,如图。使用软件渲染的效果,在qt官网找到一些资料,
2025-01-12 13:37:10
960
原创 GammaRay编译部署
克隆GammaRay项目,查看工程下的INSTALL.md,文档的前面会描述要求的qt版本,我选择GammaRay v3.0.1版本,支持的qt版本比较多,包括了qt5.12和qt5.15。接着,创建安装必要的软件,我尽量安装的比较全面,如果只为了编译通过,可能不需要安装这么多。
2024-12-27 14:29:21
289
1
原创 clang-tidy的调研记录(二)
(2) 仅能自动执行一个注册匹配器函数 和 一个检测函数,不灵活,有些复杂的判断逻辑不好在检测函数中写。笔记中的方法去实现一些简单的检测项还行,若要是复杂了,对于小白的我来说要花费很大精力来熟悉clang框架,性价比不高。(1) 代码中匹配到对象的类型复杂,需要去clang说明手册中查找类和类之间的继承关系。能够被经常使用的匹配语句大概也就是几十种,起码是一个有限的数量,但是可以根据检测项需求,搭配出多种组合。于是,我想到了一个方法,只需要clang提供AST内容,剩下的自己写代码去解析AST,思路如下。
2024-11-07 08:05:39
413
原创 QcomboBox 增加内容过长以省略号显示
这样的原始效果不太美观,测试同事希望过长的内容使用省略号显示,另外增加鼠标悬浮显示tooltips。出来增加显示省略号的功能,我还考虑当下拉选项包含icon的情况,重新计算控件的宽度。QcomboBox控件选择内容很多的下拉选项时,内容会被截断,如下图。操作系统: ubuntu24.04。qt版本 : 5.12.12。
2024-10-27 20:14:16
464
原创 clazy的使用
Clazy是一个基于Clang编译器的Qt框架的静态分析器,以下是对其详细介绍:一、功能特点问题检测 : Clazy可以在编译阶段帮助开发者找到可能存在的问题和潜在的风险,如常见错误、不规范的写法、低效的算法、内存泄漏等。Qt语义理解 : 作为一个专门针对Qt语法进行检查的工具,Clazy提供了超过50个与Qt相关的编译器警告,范围从不必要的内存分配到API的滥用,包括用于自动重构的修复建议。
2024-10-16 09:52:51
663
原创 QT窗口无法激活弹出问题排查记录
在修改测试过程中,发现偶尔能弹出来,但概率很低,然后我再把参数都恢复,发现也能偶尔弹出来,此刻我感觉和修改xcb_send_event参数没有什么关系了。首先,我想写个简易的demo来复现这个问题,但是下面所示的代码并不能复现出上面提到的问题,最小化窗口可以被激活弹出,所以我还是得用原来的代码进行排查。在测试中发现,定时器第一次触发激活窗口的现象只是任务栏的图标闪烁,但窗口不弹出,而在第二次触发时窗口从任务栏中弹出,一般情况下第二次触发就能弹出了。为什么第一次触发激活窗口没有成功?
2024-09-23 14:02:13
958
原创 工作烦恼与吐槽
虽然我自己梳理了一些排查步骤,不过还是很难落地。本质上还是没有一个能快速划分问题责任的方式,有些问题看起来是qt问题而且也不好推给应用,我也不想去为了一个问题归属扯皮(可能再干烦了就会去扯皮了)
2024-09-20 07:19:56
887
原创 华为L420切换显示器影音应用闪退问题
操作系统 : 银河麒麟V10SP1qt版本 : qt5.13电脑型号 : HUAWEI QingYun L420 KLVV-W5821。
2024-08-11 10:25:10
327
原创 银河麒麟(V10SP1)-arm版交叉编译-qt-5.12.12源码
确实是编译出来了qtbase库和qtwebengine库,如果按照文章没有操作出来有两种情况(1) 读者阅读不仔细(2) 我后期记录整理时写错了。
2024-07-06 13:15:05
2501
原创 clang-tidy的调研记录(一)
本篇文章记录了有关clang-tidy工具的编译、使用、和扩展脚本编写,大部分都是从网上学习的,取之以网,用之以网其实代码规范检测工具也挺多的,但是我想找一款免费、参考资料多、可扩展自定义(非常需要)的代码规范检测工具,最后敲定还是选择了clang-tidy以前用过cppCheck,但是感觉规则项检查少点,而且好像没有扩展自定义,这次就不考虑了clang-tidy是开源项目LLVM项目的一部分,所以需要先编译LLVM项目,clang-tidy也顺便就编译出来了也许clang-tidy可以单独编译,或者有更简
2024-06-01 13:28:14
1237
原创 使用gogs搭建git服务器-注意事项
自己的服务器上一直是用gitlab部署作为git服务,但是gitlab对机器的内存要求有点高,4G内存的小服务器开了gitlab就剩下几百兆内存了,别的服务器就受限制了,于是决定更换一个。其实我对仓库管理系统要求没有太高,正常的上传下载浏览就行了。最后决定使用gogs。
2024-04-22 13:51:12
562
原创 【spdlog学习】【issue】#2975-编译时设置宏定义SPDLOG_ACTIVE_LEVEL对日志等级的影响
开源项目没能力贡献,就通过问题学习学习,开阔一下眼界
2024-04-02 11:56:00
550
原创 [字符编码]windwos下使用libiconv转换编码格式(二)
因为代码中向libiconv库函数传递的字符串是存放在堆空间中的(我也是从网上找例子测试,是否一定要开辟堆空间存放还有待考证),如果一次性转换的字节数很巨大的话,就会导致内存空间不足,进而引发功能异常。除了上面说的字节数固定的情况,还有向utf8这种字符字节数会变化的情况,这种转换则需要复杂些的处理。经过观察,有的编码格式每个字符对应的字节是固定的,这样分段是容易的。格式,一个字符占两个字节,那么每次处理的字节数就是2的整倍数即可。所以,对于需要大量转换的数据,应该采取分段多次转换的方法。
2023-12-23 13:21:20
1378
原创 [字符编码]windwos下使用libiconv转换编码格式(一)
其实我自己也仿照人家写了一个,但是有问题,转换成功了,但是获取不到转换内容,还是自己学艺不精啊,我想这和指针方面有关系,以后还得研究研究【TDOO】libiconv.lib是用自己编译libiconv-1.15版本源码生成的,当然下面的代码只是一个demo,仅仅是展示效果。函数是从网上抄的,自己又整理了一下,这个函数是核心,是关键。目前使用字符转换的类型不考虑太多,先实现工作中常用的转换。其他编码格式遇到再说。工作中常用的转换类型就是。
2023-12-09 13:48:01
708
原创 [字符编码]在windows下编译libiconv库
4. 修改iconv.c文件,[size_t iconv (iconv_t icd, ICONV_CONST char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft)]改为。2. 修改iconv.h文件,[extern DLL_VARIABLE int _libiconv_version;](24行) 改为 [extern /* DLL_VARIABLE */ int _libiconv_version;
2023-12-06 22:43:46
1748
原创 [字符编码]基础知识
Unicode可以使用的编码方案有三种,分别是 :UTF-8 : 一种变长的编码方案,使用1~4个字节来存储,具体的表现形式为0xxxxxxx 单字节编码形式,这和 ASCII 编码完全一样,因此 UTF-8 是兼容 ASCII 的110xxxxx 10xxxxxx 双字节编码形式(第一个字节有两个连续的 1)
2023-12-06 11:19:13
905
原创 解决QTextBrowser控件调用setSource函数显示中文乱码的问题
直接把工程源文件放上来了,直接拷贝用,另外测试的html文件就靠读者自备了。自己发现的一个小技巧,有更好的方法欢迎大佬赐教。
2023-10-30 16:13:16
740
原创 【随笔】合并时间段的逻辑的整理
我记得leetcode上好像有类似这个的题,那个解法应该更简洁,我这个就是梳理了一下逻辑然后记录下来,方便以后查看,大家如果发现问题,欢迎指正。话说用文本画图也挺方便的,还感觉挺好看的。
2023-03-12 22:51:28
359
原创 【随笔】:对工厂+策略的思考
现在需要创建的有控件和具体的算法配置界面,控件是在配置界面中创建的,所以不用考虑控件,配置界面类像产品类,只有这一种产品,所以用简单工厂就足够了。现在来看看算法配置界面类,这里用A来表示类对象,A对象在被调用时需要知道显示哪个算法规则的界面,常规思路就是if else,那么外界传来一个枚举值M(表示展示哪个算法界面),A的内部就需要去用if else来判断,M=1就是展示算法规则1的界面,M=2就是展示算法规则2的界面,这个if else中对应的就是上面所述的第二步和第三步。
2023-02-25 11:38:28
672
原创 【deepin】【qt】解决透明背景变为黑色问题
参照上面的博客试了试,我这边只需要用到下面的代码即可,这个控件对应的样式表中没有再设置有关透明的属性,所以就不展示了。我自己电脑的操作系统信息如下,qt版本是qt5.15.2。CentOS下Qt窗口透明效果失效,成黑色背景的问题。接着需要设置一下系统,如下图,把。
2022-10-22 15:35:16
3507
1
原创 break pad源码编译--参考大佬博客的总结
主要讲的是参考其他博客进行break pad 源码编译时遇到的问题以及解决方法,在此做一个总结记录
2022-08-08 14:19:48
1042
5
原创 多选下拉框(改进版)
根据 https://blog.csdn.net/qq_43793182/article/details/122080407 博客改进的一个comboBox多选控件
2022-07-03 19:12:27
709
原创 银河麒麟(V10)-arm版交叉编译-qt-5.13.2源码
目的了解如何在x86架构电脑下进行arm程序的交叉编译了解如何对qt源码程序的交叉编译了解如何进行qt程序的交叉编译在网上借鉴了很多大佬的分享,所以自己也总结一下自己经验,希望帮助更多的人希望大佬积极纠错,大家共同成长准备步骤 交叉编译要注意版本问题,主要是向目标机器(最终要运行程序的机器)看齐,多花一些时间把目标机器开发环境的版本搞清楚,找到对应版本的交叉编译链,后面的大方向大多是正确的。 这次目标机器搭载了银河麒麟(V10 注意不是V10 SP1),版本信息如下Linux ve
2022-04-24 23:09:23
7183
7
原创 头文件定义全局变量的探究
问题的引入 今天在自己编程的时候,遇到了一个问题,让我更加深入的了解了一些C++的语法,让我受益匪浅,这是今天遇到的问题 我在一个头文件中定义了一个全局变量的字符串指针变量,有多个头文件都会引用这个头文件,在编译的时候遇到了这个错误。从这一个问题上我又思考到了别的问题,在这里一并记录,以便后期理解。本篇笔记都是用C++进行的测试在头文件中定义全局变量是对的吗? 既然思考,我便从头开始思考这个问题,为此我开始写demo做测试,在定义未经过修饰的全局时编译会报错。 虽然经常会写代码,但是
2022-04-10 12:50:56
5922
6
原创 基于git的dos2unix格式转换shell脚本
工作中遇到的问题,在这个简单记录一下,需要跨平台编译程序,但是从git上拉下来的文本文件都是dos格式的,比如一些要在linux下执行的脚本文件就失效了,自己就写了一个小脚本来进行转换,虽然很简单,不过我觉得还挺实用,所以在这里记录一下。 有高手发现错误请指正,谢谢。#!/bin/bash#此脚本递归遍历给定目录下的所有文件,将dos格式转换为unix#核心的转换使用git 工具的dos2unix.exe 因此需要安装git#目录最后不需要输入/ 请注意.........
2022-03-09 17:07:47
1770
qt 使用 openssl aes-cbc demo
2024-01-31
数据交互的协议商定规则
2023-12-28
C++ 异常标准库的疑惑
2021-06-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人