自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (5)
  • 收藏
  • 关注

原创 C++ 折叠表达式详解,附上代码示例

一文讲清楚C++折叠表达式的用法

2026-05-13 14:57:18 17

原创 C++ bind和function用法和代码示例

一文将C++的std::function和std::bind的概念和用法讲明白

2026-05-13 11:46:29 73

原创 C++ thread 详解,附上代码示例

C++ 里的线程,通常指一个进程内可以并发执行的独立执行流。如果编译器支持 C++20,很多时候 std::jthread 比 std::thread 更好用,因为它析构时会自动 join,不容易忘。线程池通过复用固定数量的工作线程,从任务队列取任务执行,能显著降低调度开销,适合大量短任务。多个线程在没有同步的情况下,同时访问同一块内存,并且至少有一个是写操作,这就是数据竞争,结果属于未定义行为。如果只是做简单计数、自增、自减、状态位修改,可以用 std::atomic,通常比 mutex 更轻量。

2026-05-11 13:53:10 359

原创 C++ 智能指针详解,附上代码示例

当资源不是普通的 new 出来的对象时,可以自定义释放方式。

2026-05-09 17:21:22 328

原创 C++ using typedef #define 三者的优缺点比较

它不只是做类型别名,还能做 using declaration、using namespace,所以初学时容易混淆。C++11 之后,using 是主流写法,和 auto、decltype、模板代码风格更统一。因为它不是类型系统的一部分,和 using / typedef 不是一个层面的工具。尤其是函数指针、成员函数指针这类,using 通常比 typedef 清楚很多。尤其是复杂类型,比如函数指针、模板类型,using 明显更直观。比如宏开关、平台适配、头文件保护,这些仍是它的传统强项。

2026-05-09 17:04:48 178

原创 C++ 完美转发和应用场景

完美转发就是:在泛型代码里,用。

2026-05-09 16:50:54 377

原创 深入详解C++ move语义与移动构造函数

move 语义指的是:当一个对象即将被销毁、不会再被使用时,不再做“拷贝资源”,而是把它内部持有的资源“转移”给另一个对象。典型资源包括堆内存、文件句柄、socket、锁的所有权等。移动构造函数它是类里的一个特殊构造函数,专门负责“从另一个右值对象接管资源”。

2026-05-09 16:25:13 365

原创 C++11到C++26常用语法和std算法详解,并列举出代码示例

这些一直是 C++ 社区高度关注的话题,但实际标准纳入、语法形式、编译器实现不能一概而论。、更多 range adaptor 在不同实现里逐步可用,但不同标准库落地不完全一致。这些是长期演进主线,但具体落地内容要看你使用的 GCC/Clang/MSVC 版本。重要:它们不真的删容器元素,只是“重排并返回新区间尾”。最有效的学习方式不是死记函数名,而是按“问题类型”记。这些更偏底层,面试不一定高频,但写泛型库时重要。用途:在未构造内存上构造对象,常见于容器实现。这是 C++20 最重要的库升级之一。

2026-04-27 12:02:29 344

原创 C++11到C++26所有语法和std函数详解,附加用例

C++11 开启了与,每个特性均附带原理说明与可编译用例。

2026-04-24 18:28:32 400

原创 C++11完美转发的作用和用法

如果调用 wrapper(x),x 是左值,那么 T 会推导成 T = int&,最后 std::forward<T>(arg) 还是左值。如果调用 wrapper(10),10 是右值,那么 T 会推导成 T = int,最后 std::forward<T>(arg) 是右值。完美转发的作用,是在“包装函数”里把参数原样传给下一级函数,不改变它原本的左值/右值属性,也尽量不引入多余拷贝。如果传来的是左值,就保持左值。是危险的,因为调用者传来的是左值,但你擅自把它当成“可被拿走资源”的对象了。

2026-04-24 18:25:25 379

原创 decltype(x)与decltype((x))的区别

对未加括号的变量名 x,decltype(x) 得到的是变量的声明类型。这不是引用,只是新建了一个 int 变量,把 x 的值拷贝过去。对左值表达式,decltype((x)) 得到的是 T&。对加了括号的 (x),它变成了一个左值表达式。这是引用,ref_x 和 x 指向同一个对象。

2026-04-24 18:18:46 46

原创 Qt 绘制彩色文本,包括字符颜色分割、动画效果和渐变等多种花式效果

绘制多种风格的彩色文本

2025-10-13 12:27:26 452

原创 QWidget实现文本选中与复制功能

QWidget实现文本选择和拷贝,包含全部源代码

2025-10-11 14:26:01 551

原创 C++ 指针传参测试

可以看到,点击按钮2没有打印信息,因为调用createAnimal2(SAnimal *ani)时,指针是值传递(传递的是指针值的副本),因此函数执行完后指针ani依然是空,只有传入指针的地址(即&*或**)才生效。答案是显然的,不管是传入指针,还是指针的地址,指针a的值在函数中被修改后都生效。假如有一个类A(非空),将其作为形参传入函数中,在函数中修改它的值,会生效吗?然而如果指针a是空指针,它是在函数内被创建的,那结果如何?

2025-09-12 19:22:39 252

原创 Qt 调用setLayout后,父对象自动设置

【分析】由于m_wgt嵌入在vLay布局中,而vLay的父对象是this,因而m_wgt的父对象也变为this。由于调用了m_wgt->setLayout(hLay),因而hLay的父对象是m_wgt(QObject对象在释放资源时,会自动释放它子对象的资源,相信大家都明白,因为QObject有一个QObjectList类型的对象,专门管理子对象,包括释放自身资源前会遍历释放子对象资源。关闭对话框后,m_lbInfo没有调用析构函数,与hLay都存在内存泄漏的风险(因为没有父对象,不会自动释放资源)

2025-09-12 17:12:44 508

原创 QTextLayout 的封装与功能测试

1、可以看到,QTextLayout可以精确地计算出多行文本内容的高度,文本可以完美的填充在组件内;2、QTextLayout能够支持字符串中的制表符(\t),但是不支持字符串中的换行符(\n),因为QTextLayout主要用于单段文本的布局,如果在传递给`QTextLayout`的字符串中包含换行符(`\n`),那么这些换行符会被视为普通空白字符,并不会导致换行。

2025-06-25 20:30:57 1180

原创 QTableView与QStandardItemModel的应用(含示例代码)

QStandardItemModel 是 Qt 框架中用于管理表格、列表或树形数据的通用模型类,基于 QAbstractItemModel 实现,提供了一种简单灵活的方式来处理结构化数据。通过灵活使用数据角色、信号槽机制和委托,可以轻松实现复杂交互和样式。(以下基础知识来源于DeekSeek,我没它总结的好,就借用它的术语,只整理了文本格式,博主自己写的示例代码在第二章)适合快速开发,但对超大数据量(如百万行)性能较低,此时建议自定义模型。对象,封装单元格的数据、样式和角色。自动处理数据更新和视图同步。

2025-05-03 15:47:32 1180

原创 Qt 5.15 编译路径吐槽点

在Qt 5.15以前,勾选“Shadow build”会自动将编译文件放在同一个目录下(区分编译器类型、Qt版本、debug和release等),可将代码文件和编译文件区分开,用户不用操心。不得不吐槽,这个界面做的是真的丑,只有鼠标停留在变量上才显示具体信息,查看极不方便,为啥不做个表格之类的,表格下一列直观显示变量的具体信息。虽然这样配置更灵活,但配置确实麻烦,网上没找到相应的方法,需要自己摸索,每个项目都需要手动配置一遍,而且debug和release都需要各自配置,费时费力。

2025-04-26 12:48:47 393

原创 使用DeepSeek查找资料:C++ sprintf % 种类

同样,对于size_t类型,可能需要用%zu,但如果在不支持C99的情况下,可能需要转换类型。是的,在C99中,%F是另一种浮点数的格式,和%f类似,但用大写字母表示INF和NAN,比如INFINITY会显示为INF而不是inf,科学计数法中的指数用E,例如同%E类似?每个说明符可能有不同的修饰符来指定长度,比如l、ll、h等,例如%lld对应long long,%lf对应double(在scanf中需要%lf,但在printf中,%f和%lf都用于double,因为float会被提升为double)。

2025-03-21 14:20:22 881

原创 C++生成动态和静态链接,以及调用方法(手把手教程)

C++生成dll和lib文件,以及调用库文件的详细使用说明

2025-03-21 12:03:52 821

原创 C++使用模板清空容器

1、清空容器的模板函数(包括vector、list、deque等)

2025-03-05 11:11:30 262

原创 QLabel设置图像的方法+绘制文本换行显示

QLabel的一些使用方法

2024-08-14 22:53:22 902

原创 QThread::wait: Thread tried to wait on itself

由于使用的是MyObjec::deleteLater()函数,MyObjectt的析构函数是在子线程中执行的,子线程的退出也是在子线程中执行的,因而报警,且线程退出失败(没有执行。由此可见,子线程的退出操作是在主线程中完成的,不仅没有报错,而且线程也成功退出了(执行了线程退出槽函数)由此可见,主线程的线程ID为0x43f4,子线程的线程ID为0x2790。解决方法:在线程外的其他线程中,调用线程的wait()方法。原因:在自己的线程中调用线程的wait()方法。

2024-08-05 22:50:54 1382

原创 Qt:关闭对话框,动画实现窗体逐渐缩小到消失

QPropertyAnimation对象,实现动画效果,逐渐缩小窗体尺寸,以及透明度;2、在对话框缩小时,要将界面中的控件都隐藏起来,并且将对话框布局的Margin修改成0。

2023-10-29 21:48:52 1148

原创 Qt:删除QWidget中的所有布局和组件

3、QLayout::itemAt(int index) 可根据索引获取相应的子项;2、QLayout::count() 可获取布局内的子项数量,包括子布局和子组件;1、调用QWidget::layout()可获取组件的布局;*widget) 可将某个组件从布局中移除。

2023-10-29 19:41:38 4683

原创 QLineEdit 不显示右键菜单,以及屏蔽鼠标选中文本

鼠标右键编辑框内时,会弹出系统默认的右键菜单,很多时候我们不需要,或者想使用自己设计的菜单,常见的方法就是重写QLineEdit类,修改它的事件处理。如果屏蔽掉鼠标双击或拖动时选中编辑框内的文本,只需重写它的一些鼠标事件即可。

2023-05-20 00:12:51 1414

原创 Qt:日期与时间戳互相转换Demo

Qt编写的时间与时间戳相互转换的Demo,需要的可直接copy代码,当做小工具使用

2022-12-28 15:26:07 1635

原创 Qt:注册表的使用方法(增删查改)

Qt使用注册表的基本方法

2022-11-03 16:17:20 2288 2

原创 Qt判断文件是否为图片,以及QPixmap加载图片失败的原因

QPixmap加载图片

2022-11-03 15:48:32 3136 1

原创 Qt:图标刷新自动旋转

图标自旋

2022-07-18 10:46:19 837

原创 QListWidget与QTreeWidget的用法

1、dialog.h:头文件#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QTextEdit>#include <QPushButton>#include <QListWidget>#include <QTreeWidget>class Dialog

2022-05-12 00:33:28 460

原创 C++:18位SFZ号码有效性验证

SFZ号码生成规则

2021-12-24 11:05:07 1362

原创 Qt 5.9打包后sqlite运行错误:Driver not loaded

今天打包Qt程序后,运行exe,报了一个奇葩的错误:Driver not loaded乍看之下,是数据库驱动没有加载,但我在程序调试中,Debug和Release都没问题,在网上找了一圈答案后,也没有解决我的问题。网上的答案无非两种:1、代码写的有问题;2、打包的文件夹中没有qsqlite.dll等文件,这里就不详述。折腾了半天,才发现了问题的所在:1、我的程序中,数据库文件是代码自动创建的,代码大致如下: QSqlDatabase sqlDB; sqlDB = QS

2021-12-14 18:33:38 2457 2

原创 数字范围正则表达式

软件开发中,需要限制编辑框的数字范围,网上搜了一些,要么漏洞很多,要么不完善,于是博主重新学了一些正则表达式的语法。不多废话,请看正题:1、[0,255]范围内的正则表达式:^[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|(25[0-5])$解析:这个范围IP地址中会用到,如果写成^[0-2][0-5]{2}$那就大错特错了,不仅会取000这样无意义的数值,还不能输入39、166等数字。上述表达式虽长,但是分段看就很简单,将其分成5个区间:取值范围

2021-12-13 12:04:08 9389 3

原创 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.This appl

今天在Linux系统卸载了Qt 5.9, 然后安装Qt 5.12, 结果运行qtcreator时,报如下错:后来查阅才知道, 是libxcb-xinerama0没有安装, 在终端输入以下命令即可解决问题:sudo apt-get install libxcb-xinerama0感谢链接中的博主:https://blog.csdn.net/u012308586/article/details/108509503...

2021-09-02 11:15:10 846

原创 Qt 版Word多文档编辑与处理(完整版)

微软的Office Word软件是一款通用的文字处理软件, 其功能非常强大, 但它是如何实现的呢? 本文怀着这样的想法, 用Qt开发出与之功能类似的文字处理软件.(当然了, 我只实现了一些基本功能, 读者们可根据本文的思路,对该软件的功能进行扩展), 请先看软件运行结果:(注: 在Linux运行Qt程序时, 只有将界面最大化, 才能在左上角看见菜单.)实现该软件的核心点:1. QMdiArea 类: 它是实现多文档操作的关键类, 通过向QMdiArea中添加子窗口,可操作多个子...

2021-08-25 16:56:02 2677

原创 Qt制作一个相册浏览工具

如何用Qt制作一个相册浏览的小程序? 程序开发思路如下:1.支持多张相片浏览,可翻页浏览,相片可从本地导入;2.相片要有放大和缩小的功能;3.相片可自动浏览,时间间隔可自定义.主要的代码如下:1.相片的导入void MainWindow::onBrowse(){ QString picFormat = tr("Images(*.png *.jpg *.jpeg *.bmp *.ico *.tif *.gif)"); QFileDialog fDlg(this, t

2021-08-19 10:34:53 757

原创 Qt模拟分子扩散与碰撞

假设某个封闭容器内有若干个分子,每个分子的颜色都不同,它们在容器内无规则的扩散,如何实现这个功能? 解决方案如下:1. 容器可视为一个QWidget对象,每个分子可用一个圆点表示,它的结构体数据如下:struct SColorCircle{ SColorCircle(QPoint pt, Qt::GlobalColor clr) : _pt(pt), _color(clr) {} QPoint _pt; int

2021-08-19 10:21:01 247

原创 C++11: 枚举类ostream

在传统的C++中,枚举类型并非类型安全,它可视为整数,不同的枚举类型可直接进行比较,且不同类型的枚举值i名称不能相同,这时常给枚举值取名带来困扰.C++11引入了枚举类(enumaration class),并使用enum class的语法进行声明. 枚举类是类型安全的,它不能被隐式转换为整数,也不能与整数进行比较,更不能对不同枚举类型的枚举值进行比较,但同一个枚举类中的枚举值可进行比较.枚举类中的枚举值不能直接通过 << 进行输出,需显式的进行类型转换,转换成整数后方可,也可通过重载

2021-08-13 14:27:51 446

原创 Qt生成二维码(源码可下载)

用Qt 开发生成二维码的工具,步骤如下:1. 下载Qt开源代码qrencode(GitHub中可搜到)2. 编写一个继承QWidget的二维码类,重写该函数:void paintEvent(QPaintEvent *event) override3.在主窗体中测试生成的二维码,测试结果如下:源码下载路径如下:https://download.csdn.net/download/ouyangxiaozi/21044215...

2021-08-13 14:00:57 516

Qt 版Word多文档编辑与处理(完整版)

该软件仿照微软的Office Word办公软件,使用Qt开发,具备以下功能: 1.支持多文档同时编辑, 多文档可平铺或层叠显示, 保存的文件格式为htm和html; 2.菜单栏和工具栏具有基本的Word文档功能: a) 文件有新建、打开、保存、打印等功能; b) 文件编辑有撤销、重做、复制、剪切、粘贴的功能; c) 文本编辑格式有:字体(粗体、下划线、斜体)、字体大小、字体颜色、段落(左对齐、居中、右对齐)等.

2021-08-25

Qt 桌面数字电子钟(可拖曳)

使用Qt制作一个简单的桌面电子钟, 电子钟大小固定, 显示当前时间(时间格式: 小时/分钟), 使用鼠标左键可拖曳电子钟, 在电子钟上右击, 会将其关闭

2021-08-25

Qt相片浏览(支持导入相片,相片放大和缩小,自动浏览等功能)

1.支持多种格式的相片; 2.可导入相片并查看; 3.相片可翻页; 4.相片可放大和缩小; 5.相片可自动浏览(浏览速度可设置),也可取消浏览.

2021-08-17

Qt模拟分子扩散(绘图,随机数)

在绘图区显示若干个不同颜色的圆点,通过定时器刷新圆点的位置

2021-08-16

QrCodeTest.zip

[原创]Qt生成二维码,二维码中间可放图片

2021-08-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除