![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
开发语言
文章平均质量分 71
主要以C和C++为主
大草原的小灰灰
消灭了一个bug,还会有千千万万个bug
展开
-
Qt实现json数据的生成、解析、修改和删除
本文章主要介绍如何使用QT提供的json相关类来处理json数据,包括json数据的生成、解析、修改和json数据的删除。原创 2024-08-23 18:51:38 · 949 阅读 · 0 评论 -
cmake之find_package命令详解
find_package是cmake用来管理第三方库的一个命令。原创 2024-08-03 17:43:19 · 934 阅读 · 0 评论 -
CMake生成Debug和Release目标程序时的一些配置
本文章将介绍在Windows和Linux平台,生成可执行程序时,如何设置Debug和Release的一些属性。主要介绍如何设置目标程序的生成路径,以及运行时库的设置和目标程序版本号的设置。原创 2024-07-21 10:57:15 · 2151 阅读 · 0 评论 -
使用OpenCppCoverage统计代码覆盖率
OpenCppCoverage 是一款专为Windows平台设计的开源C++代码覆盖率统计工具。原创 2024-07-20 09:49:34 · 804 阅读 · 0 评论 -
CMake多行注释以及通过Message打印不同级别日志
本文章主要介绍了cmake的单行和多行注释语法,以及如何使用message输出不同级别的日志。原创 2024-06-17 08:52:01 · 1072 阅读 · 0 评论 -
CMake编译安装、生成可执行程序、生成静态动态库以及静态动态库的链接
本文章介绍了CMake的安装,使用CMake生成可执行程序,生成静态和动态库以及静态库和动态库的链接。原创 2024-06-02 12:39:00 · 2473 阅读 · 0 评论 -
使用RapidJson开源库解析和生成Json数据
RapidJSON是一个高效、轻量级的 C++ JSON 解析器及生成器库,由腾讯公司开源。RapidJSON 是只有头文件的 C++ 库。只需把 include/rapidjson 目录复制到项目中即可使用。原创 2024-05-12 12:01:58 · 1026 阅读 · 0 评论 -
通过C++开源库TinyXML2解析和生成XML数据
TinyXML2是一个轻量级的、开源的C++库,专门用于解析和生成XML文档。它是原始TinyXML库的一个升级版本,设计得更为高效和强大,同时保持了简单易用的特点。TinyXML2非常适合那些需要处理XML数据,而又希望保持代码简洁和执行效率的应用场景。原创 2024-04-27 13:01:02 · 1504 阅读 · 0 评论 -
C++ UML 类图介绍与设计
UML(Unified Modeling Language),即统一建模语言,是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。原创 2024-04-14 17:23:33 · 1950 阅读 · 0 评论 -
MFC编程入门级教程
MFC (Microsoft Foundation Classes) 是微软公司专门为C++开发者设计的一套应用程序框架和类库。它通过C++类的形式对Windows API进行了高度封装,简化了Windows应用程序的开发过程。MFC提供了一系列预定义的类,这些类对应于Windows编程中的各种基本元素,如窗口、菜单、对话框、控件等,同时也包含了应用程序框架的支持,如文档/视图体系结构、命令路由、消息映射机制等。原创 2024-04-13 11:18:11 · 4968 阅读 · 0 评论 -
使用c语言libexpat开源库解析XML数据
Expat 是一个用 C 语言编写的开源 XML 解析库,以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台,包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API,Expat 成为了许多C/C++程序员解析XML文档的首选工具之一。原创 2024-04-04 09:54:36 · 1462 阅读 · 0 评论 -
SQLite数据库使用指南以及相关API编程
SQLite是一种基于C语言开发的轻量级、快速、自包含、高可靠性和全功能的SQL数据库引擎。它是全球范围内使用最为广泛的数据库引擎,被嵌入到所有移动设备和大部分计算机中,并且伴随着无数日常使用的应用程序一起提供。原创 2024-03-16 11:24:09 · 1411 阅读 · 0 评论 -
C++高性能日志库spdlog使用指南
Spdlog 专注于提供极致的性能,在大量日志记录场景下也能保持较低的延迟和较高的吞吐量。原创 2024-02-28 16:48:10 · 6789 阅读 · 2 评论 -
C++日志库plog使用指南
plog是一个轻量级、跨平台的C++日志库,它设计简洁且易于使用原创 2024-02-22 21:07:39 · 2017 阅读 · 1 评论 -
QT消息机制和事件 - 鼠标事件、键盘按下事件、绘图事件、定时器事件处理
事件(event)是由系统或者Qt本身在不同时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等。另一些事件则由系统自动发出,如定时器事件。原创 2023-12-02 17:03:44 · 599 阅读 · 0 评论 -
Qt中使用QNetworkAccessManager类发送https请求时状态码返回0
在项目开发中,碰到一个问题,使用QNetworkAccessManager类对象发送https请求时,状态码一直返回0,抓包分析看请求响应也是正常的。费了好大劲终于搞定了,主要是两个原因导致的。原创 2023-11-18 17:37:36 · 1511 阅读 · 0 评论 -
Qt实现TCP调试助手 - 简述如何在Qt中实现TCP多并发
软件开发中,可能经常会用到TCP调试工具。本人使用QT开发了一款TCP调试工具,方便大家使用。本文章主要介绍下,该工具的功能,以及如何在Qt中实现TCP服务器的并发。原创 2023-11-12 18:55:57 · 1150 阅读 · 1 评论 -
轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印
c语言没有现成的日志库,如果要记录日志,需要自己封装一个日志库。如果要实现日志级别区别和参数打印,还是比较麻烦的,正好在github找到了一个c语言开源日志库,可以实现日志级别打印,参数打印,而且还会记录日期和行号,最重要的是代码非常少,只有100多行,可以直接包含在我们自己的工程代码中,不需要任何依赖。原创 2023-09-18 19:07:42 · 5654 阅读 · 2 评论 -
Windows/Linux(命令、安装包和源码安装)平台各个版本QT详细安装教程
本文章主要介绍了Windows/Linux平台Qt4,Qt5和Qt6的安装步骤,在Linux平台又提供了命令安装、源码安装和安装包安装三种方式。原创 2023-09-17 18:06:53 · 3858 阅读 · 0 评论 -
使用WinDbg进行动态调试
本文章主要介绍如何使用WinDbg进行动态调试。如果程序崩溃后,没有记录dump文件,或者程序启动时发生异常,比如常见的 应用程序无法正常启动(0xc000007b) 报错,都可以使用WinDbg动态调试功能来定位问题。文章最后,对WinDbg常用命令进行了总结。原创 2023-09-09 13:08:25 · 915 阅读 · 0 评论 -
Dump文件的生成以及使用WinDbg静态分析
本文章主要介绍了如何生成Dump文件,包括两种方式,通过代码生成和通过注册表生成。并且介绍了WinDbg工具的下载和使用,以及如何使用WinDbg工具去静态分析Dump文件,从而找到程序的崩溃位置。原创 2023-09-03 00:03:06 · 801 阅读 · 0 评论 -
不同系统和架构下的宏定义名称
C/C++代码实现跨平台编译时,基本上都会调用系统函数,这个时候就可以使用不同系统下的宏定义来实现跨平台的编译。系统主要分为windows,linux和mac。架构主要指的是linux下的架构,常用的有x86,arm和mips架构。原创 2023-07-26 20:31:00 · 1403 阅读 · 0 评论 -
静态链接和动态链接 -- 静态加载(隐式调用)和动态加载(显式调用)
静态链接 : 由链接器在链接时将库的内容加入到可执行程序中,这里的库是静态库,Windos下是*.lib后缀,Linux下是*.a后缀。动态链接 : 可执行程序加载时(静态加载) 或者 运行时(动态加载),将库文件中的内容加入到可执行程序中,这里的库是动态库,Windows下是*.dll后缀,Linux下是*.so后缀。原创 2023-06-17 18:26:43 · 956 阅读 · 0 评论 -
QT实现发送get和post请求
介绍下如何在qt程序中给http服务端发送get和post请求,首先你要有一个http服务端,下面直接贴下代码。ui界面代码就不贴了,分别是两个按钮控件发送get和post请求和一个plainTextEdit控件来展示信息。...原创 2022-08-15 19:18:57 · 3290 阅读 · 1 评论 -
QT自定义控件
QT的UI设计器提供了很多GUI设计的界面组件,可以满足常见的界面设计需求。但是某些时候需要设计特殊的界面组件,而在UI设计器的组件面板里根本没有合适的组件,这时就需要设计自定义的界面组件。在widget界面上放置一个Widget组件,右击Widget,点击提升为提升的类的名称就是刚才添加的那个类Custom点击添加,然后点击提升运行程序后,可以看到,在Widget主窗口中就会出现我们自定义的控件我们想要的效果是拉动进度条,数字同步发生变化。原创 2023-03-12 11:39:04 · 3898 阅读 · 0 评论 -
QT实现线程操作
1、第一种方法第一种方法是QT4.8之前的写法,需要重写一个类,继承于QThread类。1.1、自己实现一个子线程类myThread,并继承于QThread类。1.2、重写子线程类myThread中的虚函数run()。1.3、在主线程Widget中定义子线程类对象。1.4、在主线程Widget中连接信号槽,实现子线程于主线程之前通信。1.5、主线程Widget中使用子线程的start()方法启动子线程。项目结构主线程代码widget.h#ifndef WID原创 2021-12-26 14:36:20 · 1714 阅读 · 0 评论 -
QT程序打包发布
1、拷贝支持应用程序的动态库,QT有自动的拷贝工具。 在你的QT安装目录下找到windeployqt.exe程序。我的是在该目录下D:\qt5.9\5.9\msvc2017_64\bin,然后在该目录下打开cmd,运行windeployqt.exe程序,后面跟你的应用程序。 执行后,QWebEngineView.exe所需的动态库就会被自动拷贝过来。2、下载打包工具https://jrsoftware.org/isdl.php ...原创 2021-09-02 13:59:46 · 468 阅读 · 0 评论 -
使用QT绘制折线图
我们先创建一个工程,然后在界面上放置一个Graphics Widget组件,在组件上点击鼠标右键,选择提升为...提升的类的名称我们写为QChartView下面我们贴下主要代码zx.pro#-------------------------------------------------## Project created by QtCreator 2022-02-13T18:15:06##--------------------------------------------原创 2022-02-19 12:13:48 · 8671 阅读 · 4 评论 -
QT之QTableWidget控件
QTableWidget是QT中的表格组件类。一般用来展示多行多列的数据,是QT中使用较多的控件之一。1、QTableWidgetItem对象QTableWidget中的每一个单元格都是一个QTableWidgetItem对象,因此先介绍下QTableWidgetItem的常用方法。1.1、设置文本内容void QTableWidgetItem::setText(const QString &text)1.2、设置对齐方式void QTableWidgetItem::setT原创 2022-02-12 18:48:59 · 23838 阅读 · 0 评论 -
QLabel中文乱码问题
给QLabel设置显示中文时,一直乱码。中文不能正常显示。ui->label->setText("测试");在代码中已经设置了UTF-8编码格式 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStr原创 2022-02-28 15:55:59 · 2714 阅读 · 0 评论 -
setAttribute(Qt::WA_DeleteOnClose) 导致程序崩溃问题
项目开发过程中,碰到一个问题,关闭窗口后,程序会崩溃掉。找了好久才发现是设置了这个属性setAttribute(Qt::WA_DeleteOnClose)未设置该属性时,你去关闭窗口,窗口资源不会立即释放,窗口只是隐藏了。当调用析构函数时,窗口资源才会真正释放。而设置了该属性,那么你去关闭窗口,窗口资源会立即释放掉。可以看下代码:widget.cpp#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *par原创 2022-04-08 20:56:52 · 4181 阅读 · 0 评论 -
QT两种方法实现定时器
2、启动定时器返回值为定时器id,参数为定时间隔,单位为毫秒代码widget.hwidget.cpp方法21、定义一个QTimer对象2、启动定时器参数为定时间隔,单位为毫秒3、连接信号槽定时间隔到,QTimer对象会发出一个timeout信号。连接信号槽,在槽函数中进行相关操作代码widget.hwidget.cpp效果...原创 2022-06-26 18:28:37 · 4626 阅读 · 0 评论 -
QT信号与槽介绍-自定义信号与槽的实现以及信号重载
信号与槽是Qt编程的基础,也是Qt的一大创新。因为有了信号与槽的编程机制,在Qt中处理界面各个组件的交互操作时变得更加直观和简单。信号(signal)就是在特定情况下被发射的事件,槽(slot)就是对信号响应的函数。槽函数与一般函数的不同是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。本文章主要介绍下标准信号与槽的使用,自定义信号与槽的使用,以及信号的重载。比如我们点击鼠标时,想弹出一个对话框,这个时候就可以自己实现一个槽函数。原创 2023-03-12 13:35:32 · 1223 阅读 · 0 评论 -
QT中使用正则表达式检测IP和端口
QRegExp regExpIp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"); if (!regExpIp.exactMatch(ip)) { QMessageBox::information(this, "提示", "ip格式错误"); return; } QRegExp regExpPort("([0-9]|[1-9]\\d{1,...原创 2022-03-11 13:49:05 · 2461 阅读 · 0 评论 -
Visual Studio 2015 + cmake编译QT5程序
【代码】VS2015 + CMAKE编译QT5程序。原创 2023-04-01 10:26:15 · 1923 阅读 · 1 评论 -
MFC标签页 Tab Control控件介绍
标签页Tab Control在MFC界面开发中的使用频率还是非常高的,本文章就主要介绍下该控件的使用。原创 2023-03-11 22:31:26 · 3472 阅读 · 10 评论 -
MFC常用控件使用(文本框、编辑框、下拉框、列表控件、树控件)
本文章主要介绍下MFC常用控件的使用,包括静态文本框(Static Text)、编辑框(Edit Control)、下拉框(Combo Box)、列表控件(List Control)、树控件(Tree Control)的使用。原创 2023-03-11 21:11:41 · 7362 阅读 · 0 评论 -
Makefile简介及如何指定头文件和库文件
初学C/C++时,我们编译源文件时,通常直接敲命令去进行编译。但在实际项目中,源文件非常多,直接敲命令编译就不现实了,这时候就需要用到Makefile,Makefile是一个文本文件,我们只需要提前在Makefile中写好源文件的编译规则,然后直接执行make命令,就可以自动编译。原创 2023-02-19 13:23:34 · 10236 阅读 · 0 评论 -
c语言json库parson的介绍和使用
parson是用C语言开发的一个json解析库, 提供json的序列化和反序列化功能。使用时只需要在我们的工程中引入头文件parson.h和源文件parson.c即可使用。原创 2023-01-06 14:23:04 · 2083 阅读 · 1 评论 -
C++ json库介绍 - json11的使用
本文章主要介绍下json11库的使用json11: json11是一个轻量级的C++11库, 提供JSON的序列化和反序列化功能。使用时只需要在我们的工程中引入头文件json11.hpp和源文件json11.cpp即可使用。原创 2023-01-01 12:55:38 · 3456 阅读 · 0 评论