- 博客(49)
- 收藏
- 关注
原创 LeakTracer - 跟踪和分析 C++ 程序中的内存泄漏,使用方法及分析报告转换
LeakTracer 是一款轻量级的内存泄漏检测工具,主要用于追踪 C/C++ 程序中的内存分配与释放问题,LeakTracer 通过重写 C/C++ 的内存管理函数(如mallocfreenewdelete),记录所有内存分配和释放操作,并将其保存在内部链表中。在程序运行结束后,分析未释放的内存块,生成泄漏报告。
2025-03-18 14:26:54
712
原创 docker构建镜像时总会有部分文件没有被更新,解决办法
然而并没有效果,新打包的镜像还是存在部分旧文件,最后无奈把Dokerfile文件换了一种写法,解决问题,当然在此之前试过使用笨办法也能解决;在构建镜像的时候总会遇到明明更新了里面的某些库文件,但是打包镜像以后发现镜像里面的库文件还是没有被更新,依然使用的旧文件。经过这样修改以后,之前总是没有更新的几个库文件这次都更新了;主要区别就是 lib目录,使用了 lib/ 直接添加了整个目录,包括整个目录的文件和文件夹。试过了很多办法,比如 在构建镜像的时候使用 --no-cache。然后检查新打包的镜像。
2025-03-14 08:58:18
519
原创 linux环境中,sh脚本轻松实现打包可执行文件及其全部依赖库,并生成启动脚本
会自动在当前目录创建一个新的目录,并打包好可执行文件(app_name)的所有依赖库,并将可执行文件和依赖库全部打包到新目录中,再新目录中创建start.sh脚本,执行start.sh可以启动可执行文件。有时候编译了一个小工具,想发给其他同事使用,但是很容易缺少库,每次运行可执行文件的时候手动链接一次库就很麻烦,如果打包的时候将库全部打包好,并且链接好库,岂不美滋滋。复制以下脚本,粘贴到终端中,按下esc,输入:wq 保存退出。在按下 i ,进入编辑模式,
2025-02-14 16:05:13
174
原创 linux环境中,C++控制台程序屏蔽方向键
即:^[[A - 上 ^[[B - 下 ^[[D - 左 ^[[C - 右。至此,按下方向键后,不会在再出现特殊字符,但是光标也不会移动,移动光标需要下一步讨论。启动程序后,进入交互模式,输入方向键会出现 ^[[A^[[B^[[D^[[C。因为控制台默认以 ANSI 转义序列的形式来表示方向键输入;实际上我们是想要移动光标来着,反而多出了特殊字符;开发环境是linux。现在实现屏蔽方向键;
2025-02-14 14:59:45
139
原创 QT框架中使用easylogging日志库报错重定义排查办法:error: multiple definition of `el::base::elStorage
显然问题是出在了 public_macro.h中,因为我在多个cpp中 引入了这个头文件。GetProcessIdAsString 被重定义。一般会在很多cpp里面报错重定义。直接放到了 main.cpp中。
2025-02-11 16:24:07
341
原创 报错:Running ‘nmake‘ ‘-?‘ failed with: no such file or directory 排查办法
用CLion打开项目的时候,直接报错,Running ‘nmake‘ ‘-?一般常出现于拉取了一个新项目,啥都没干,用IDE打开就这样了,而且编译自己的其他项目是没有问题的;CLion,设置 - 构建、执行和部署 - CMake 生成器, 修改成使用默认值 Ninja。点击确定以后,会重新自动执行CMake,解决。
2025-02-08 15:15:47
404
原创 C++ QT框架极简日志记录,一段代码实现日志记录并输出到文件
个人开发一个小工具,有日志记录的需求,但是不需要使用日志库,感觉日志库太重了,本身一个小程序而已,也不需要这么复杂的日志记录;因为是一段宏定义,所以在cpp里面使用这段定义的时候需要 include 一些头文件。日志文件保存在 ./log/20250208_测试工具.log。下面是直接在QT Creator中启动程序。日志名称以时间命名 + 传参命名。
2025-02-08 15:02:49
288
原创 QTCreator打开项目后右下角构建进度条直接爆红,问题排查
起因是这样的:我的笔记本电脑电源适配器坏了,年后来不及买适配器了,索信直接买了台新笔记本电脑用于办公,原本是使用的QT 5.12.0,后来在新电脑上安装的是 QT 5.12.12,于是打开pro文件,构建不了。以为是版本问题,于是换回了 QT 5.12.0,还是构建不了;使用了大家常用的方法,选项 - 构建和运行 - 概要 - 项目和目录,将这里的选项改为当前目录,实际上我改完后没有效果,后来发现与路径有关,
2025-02-05 08:40:45
259
原创 pro文件转换为CMakeLists.txt文件,QT官方工具使用教程
工具创建一个文件,覆盖转换后的.pro文件的大多数常见属性。生成的CMake项目可以作为基线使用,但可能需要手动调整。无法转换的QMake构造将以注释的形式保留在CMake项目中。
2024-12-19 18:24:11
1719
原创 OpenLens没有了进入Pod Shell 和查看日志的按钮 解决办法
因为OpenLens 6.3.0中删除了Pod的 进入 Pod Shell 按钮和查看日志按钮。我们需要手动在OpenLens中下载拓展插件,才能继续使用这两个功能。可能需要科学上网才能安装,不然直接点击 Install会报错。
2024-11-27 16:52:24
465
原创 策略模式(C++)三分钟读懂
策略模式(Strategy Pattern)是一种面向对象编程的一种行为型设计模式,它允许在运行时动态地改变算法或策略的选择,从而使算法的变化独立于使用它的客户端。这种模式通过将算法封装在单独的类中,使得它们可以相互替换,并使得它们易于理解、扩展和维护。多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if…else 语句、switch…case 语句。下面用QT框架下C++演示一下。
2024-11-04 11:27:54
516
原创 命令模式(C++)三分钟读懂
命令模式(Command Pattern)是一种行为设计模式,它将请求封装成一个对象,从而使得可以参数化客户端对象传递不同的请求,并且能够支持请求的排队、记录请求日志、撤销操作等。在命令模式中,请求发送者和请求接收者之间通过命令对象进行解耦,从而实现了请求发送者和请求接收者之间的松耦合。下面是一个使用QT C++编写的简单命令模式示例,
2024-10-28 09:37:36
317
原创 责任链模式演示(C++)三分钟读懂
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,其中多个对象按照其在链中的顺序依次处理请求,直到有一个对象处理请求为止。这样可以避免请求的发送者与接收者之间的耦合,同时使得多个对象都有机会处理请求。下面是一个用QT框架和C++语言实现责任链模式的简单示例,假设我们有一个简单的报销审批流程,包括经理、副总裁和总裁三个级别的审批人员,根据报销金额的不同,不同级别的审批人员有不同的审批权限。
2024-10-28 09:18:11
547
原创 工厂模式演示(C++)三分钟读懂
工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需指定创建对象的具体类。工厂模式定义了一个创建对象的接口,但将具体的实例化推迟到子类中。
2024-10-17 18:00:34
378
原创 代理模式演示(C++)三分钟读懂
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建复杂对象的过程与其表示分离,从而可以使用相同的构建过程来创建不同的表示。
2024-10-17 17:44:35
517
原创 代理模式演示(C++)三分钟读懂
代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过代理对象控制对另一个对象的访问。代理通常充当客户端和实际对象之间的中介,可以在访问实际对象之前或之后执行额外的操作。
2024-10-17 11:53:09
440
2
原创 适配器模式演示(C++)三分钟读懂
适配器模式是一种结构型设计模式,用于使接口不兼容的类能够一起工作。适配器模式通过引入一个适配器类来实现这一点,该适配器类将不兼容的接口转换为符合客户端期望的接口。
2024-10-17 11:42:39
561
原创 观察者模式演示(C++ QT框架)三分钟读懂
观察者模式是一种设计模式,其中一个对象(称为主题或可观察者)维护一组依赖于它的对象(称为观察者),当主题的状态发生变化时,它会通知所有观察者。在C++中结合Qt,可以使用信号和槽机制来实现观察者模式。
2024-10-17 11:31:06
571
原创 make的时候报错大量的moc_xxxxx重定义的错误,解决思路
然后全局搜索:#ifndef ABCDE_H 或 #define ABCED_H ,检查是否在别的文件中也出现了这两行,其实出现的原因很简单,就是在复制代码的时候,把一个cpp文件里面的全部内容都复制到了另一个cpp文件中,包括 #ifndef #define,这样会qmake可能不会报错,但是cmake就不行了。这里是一个排查方向,进入到报错的cpp文件,例如:abcde.cpp 或者 abcde.h。
2024-04-30 10:12:34
456
1
原创 【QT基础】将QStringList中的元素以某一规律进行切割或过滤QString切割,并将切割后的元素在进行还原
是 Qt 框架中的一个类,用于存储一组字符串。它是一个动态数组,可以根据需要自动调整大小,并提供了一些方便的方法来操作字符串列表。这里我们主要是处理的是,包含有一定规律的QString,或者有一定规律的QStringList;例如,我有以下几种命名格式,,简化一下就是"名称"、"数字_名称_其他信息"。我们不妨再来提一个需求,有。
2023-12-01 16:54:04
857
原创 QT Creator实现导出某数据库的某表格,导出的时候将表头写成中文
其中,需要根据实际情况修改以下参数: - `/path/to/database.db`:数据库文件路径和文件名 - `table_name`:需要导出的表格名称 - `/path/to/output.xls`:输出的Excel文件路径和文件名 这段代码将从SQLite数据库中导出`table_name`表格的所有数据,写入Excel文件,并使用中文表头。实现将某数据库内的某表格,导出为execl可以打开的表格文件,一般后缀为 .xls。2. 创建Excel文件并写入表头和数据。3. 保存Excel文件。
2023-03-31 18:02:11
521
原创 汇编语言及其常用指令 3分钟急速了解
当今计算机科学的领域中,汇编语言是一门非常重要的编程语言。汇编语言是一种低级别的语言,它直接操作计算机的硬件,因此它比高级编程语言更加快速和高效。在本篇文章中,我们将花费3分钟时间,快速了解汇编语言。首先,让我们简要介绍汇编语言的历史和由来。汇编语言最早出现在20世纪50年代,当时它是为了解决计算机内存空间不足的问题而产生的。汇编语言使用符号化的指令来代替二进制代码,使得编写代码更加容易。虽然汇编语言已经有了几十年的历史,但它仍然被广泛使用,特别是在嵌入式系统、驱动程序和操作系统等领域。
2023-03-31 17:44:55
769
原创 查看虚拟机操作系统版本
如果你使用的是Windows操作系统,可以按下Win+R键,打开运行对话框,然后输入"winver",点击"确定"按钮。这个命令会显示Windows操作系统的版本信息,包括版本号和版本类型。总之,要查看虚拟机操作系统版本,你需要打开终端或者运行对话框,并输入相应的命令来获取操作系统的版本信息。这个命令会显示操作系统的版本信息,包括发行版名称、版本号和描述。这个命令会显示操作系统的名称、版本号和ID。打开虚拟机并登录到操作系统。
2023-03-27 16:16:48
10698
原创 GPT问答:在Ubuntu系统中,利用QtCreator的QSqlQuery语句,连接到其他目录的mission_history.db数据库,并将其中的名为 mission 表单,以xls格式导出
麻烦实现一下,在Ubuntu系统中,利用QtCreator的 QSqlQuery语句,连接到其他目录的mission_history.db 数据库,并将其中的名为 mission 表单,以xls格式导出到当前路径下。
2023-03-20 14:49:01
162
原创 QT基础:做一个图片编辑器演示,UI中主要用到QScrollArea、QPuhButton、QSlider、QMenBar、QStatusBar、QGroupBox等控件
主要实现功能:打开某路径图片可以在窗口中展示,如果图片大于展示区域,会自动出现滑动块,可以通过画笔和橡皮擦来修改图片,可以选择不同的画笔颜色,可以画笔大小,编辑完成后,可以保存图片,打开图片快捷键为 ctrl + o ,保存图片快捷键为: ctrl + s;做一个图片编辑器的演示,其实也相当于 QScrollArea、QPuhButton、QSlider、QMenBar、QStatusBar、QGroupBox 等控件的综合演示。1、打开QT,创建一个 mainWindow 项目,画好UI。
2023-03-19 22:17:02
677
原创 QT基础:QImage像素图多种遍历方法修改图像演示
这里主要用到了两种像素图的遍历方法一种是通过内存访问像素点来修改RGBA颜色另一种是用 setPixelColor() 函数访问每一个像素点修改颜色。
2023-03-19 10:19:20
1857
原创 QT基础:QPainte 绘制线段,并修改画笔为图片演示
使用QPainte将修改画笔样式,并用drawLine和drawLines绘制线段这里沿用了中的代码。
2023-03-18 21:23:37
1105
原创 QT基础:QPainte 绘制文本并设置动态设置字体演示
QPainte是QT里面的一个绘制控件,这里演示的是,用 QPainte 绘制一个文本,并通过 ui 上的控件 改变文本字体后触发widget槽函数update()来刷新界面,演示过于简单,适合初学者食用。
2023-03-18 20:28:42
1734
原创 QT基础:窗口大小改变事件演示
这里演示的是,控件大小随着窗口大小的改变而改变,做到控件大小适应窗口大小适合初学者食用这里的知识点是重载 resizeEvent(QResizeEvent * re) 函数,和重载 event(QEvent *ev) 函数。
2023-03-18 11:37:48
5639
原创 QT基础:event 函数重载、筛选鼠标按压事件、获取鼠标位置、右键显示菜单、修改鼠标样式功能演示
这里演示的是QT基础,主要包含:event 函数重载、筛选鼠标按压事件、获取鼠标位置、右键显示菜单、修改鼠标样式等功能演示,适合初学者食用。演示功能:点击鼠标左键、右键、中键、左右键同时点击,输出鼠标当前坐标;按下鼠标中键,鼠标样式被替换,按下鼠标左键,鼠标样式恢复默认鼠标事件重载,这里暂时不放出来了。
2023-03-18 10:09:44
2181
原创 QT基础:QMenuBar、QToolBar、QStatusBar 综合基本演示
本文主要演示 Widget 中的QMenuBar控件的二级菜单三级菜单信号槽的演示,添加图标设置单选和多选绑定快捷键,还有QToolBarQStatusBar。
2023-03-13 21:41:29
2131
1
原创 用C++遍历指定文件夹内的所有文件,并获取文件名和路径并存入JsonArray
这段代码中,我们首先定义了要遍历的文件夹路径,然后定义了一个JsonArray。在遍历文件夹的循环中,我们首先检查当前entry是否是文件,如果是文件,则将文件名和路径存入一个Json对象中,然后将该Json对象加入JsonArray中。以下是使用C++遍历指定文件夹内所有文件,并将文件名和路径存入JsonArray的代码示例。用C++遍历指定文件夹内的所有文件,并获取文件名和路径并存入JsonArray,并打印在控制台,JsonArray中的每一项格式均为:文件名,文件路径。
2023-03-13 16:18:34
543
原创 用C++代码遍历ubuntu下指定文件夹内的所有的MP4文件和PNG文件,获取到它们的文件名和路径,存入JsonArray容器中
请注意,此代码需要安装boost库和jsoncpp库才能编译。在编译时,需要链接boost和jsoncpp库。
2023-03-13 16:16:07
622
原创 QT基础:遍历QListWidget,及QListWidget简单演示,适合初学者食用
3、代码演示,手动添加 QListWidget 数据的几种不同方式,这里的代码是写在 widget.cpp中的,遍历 QListWidget , 这里创建了一个槽函数来进行遍历,槽函数与之前添加的按钮进行绑定。2、在窗口中,选中 QListWidget 小部件,右侧属性栏还可以设置每一行数据的尺寸、图标尺寸还有选中模式,选中模式通常是无法选择、单选、多选、连续选择。1、打开QT,创建一个 widget 项目,在UI中加入 QListWidget 和一个 PushButton(等会备用)
2023-03-02 23:08:43
5982
原创 QT基础:QSlider 滑块的简单演示
滑块共有两种,一种是水平的,一种是垂直的,它们的区别只是放置的方向不同而已这里主要演示水平滑块,所以修改了水平滑块的最大值、鼠标移动和键盘移动的参数,垂直滑块保持默认的参数Click() 槽函数绑定的是 按钮的点击事件其他的槽函数绑定的滑块的值改变、移动、按压、释放事件// 获取滑块当前值// 将滑块当前值+10 写入进去// 滑块值改变后触发// 获取滑块当前值// 滑块移动时就触发// 按压滑块时触发// 松开时触发delete ui;
2023-03-01 17:42:36
2745
原创 QT基础:QRadioButton、QVBoxLayout及遍历按钮组的简单演示
其中引入了 QRadioButton、QButtonGroup、QVBoxLayout、QPushButton、QMessageBox。QRadioButton 是一个单选按钮,多个单选按钮在同一层的时候只能有一个被选中。用QT创建一个 widget 项目,手动在 widgey.cpp 中添加控件。这里主要用到的是控件是 QRadioButton、QVBoxLayout。QVBoxLayout 是一个垂直布局器,将控件垂直分布于布局器中。主要用到的方法是按钮组的遍历。
2023-02-27 23:27:34
1063
原创 QT基础:QButtonGroup 按钮组的简单演示
QButtonGroup 是一个按钮组,就是将控件进行组合或分组的一个容器,但是它并不在设计师里面可以直接拉出来用在使用 QButtonGroup 的时候需要引入一下。在选中或者取消选中任意一个选择框的时候,都能触发一次按钮组的 buttonClicked 和 buttonToggled 信号,选中一个选择框的时候,可以触发按钮组的 buttonClicked 和 buttonToggled 信号再去选中另一个选择框的时候,第一个选择框的buttonToggled 的信号又被触发了一次;
2023-02-27 22:20:38
6515
qmake转换cmake工具
2024-12-20
QT图片编辑器完整源码
2023-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人