自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 Qt实现微信聊天(windows和linux上都可运行)

当服务器启动并读取配置文件完成初始化操作后,就会运行等待连接模块,这个模块会创建套接字,然后进入等待连接的暂停状态。接下来,当客户端发起连接时,这个模块会恢复运行并接受连接,然后启动客户端通信模块,并移交完成连接的套接字。接下来,客户端通信模块就会使用已连接的套接字与客户端进行通讯,通信结束后,这个模块就退出了。对于即时通信应用来说,实时性是非常重要的,而UDP协议正是为实时性需求而设计的。对于社交网络应用来说,数据的可靠性和顺序性是非常重要的,因此微信选择使用TCP协议。、多对多的交互通信。

2024-08-05 12:08:40 3297 1

原创 江南大学医疗诊断系统

医生可以使用该软件查看患者的电子档案,通过查看CT相片,为患者写诊断结果,同时CT相片经过特定的图像处理算法处理后更加清晰可见,提高医生的诊断效率。

2023-11-26 19:51:29 1760

原创 Windows下 用MINGW 构建hiredis库

用cmake生成makefile文件在build目录下执行编译命令,就能生成和这两个文件。make编译成功后,在build目录下或其DebugRelease子目录下,就可以找到和这两个文件了。

2026-04-08 15:05:27 2

原创 Redis安装与启动

将 Redis 注册为 Windows 服务。服务注册完成后,它还没有运行,需要你手动启动。

2026-04-07 16:22:55 6

原创 Timer 定时器的使用场景大全

选择合适的间隔:避免过短的间隔导致性能问题及时清理:组件销毁时确保停止定时器使用restart():灵活重置定时器结合条件:使用running属性控制启停注意内存泄漏:循环定时器记得在适当时机停止Timer是QML中最常用且最灵活的组件之一,掌握这些场景能让你的应用更加智能和友好。

2026-03-14 12:57:23 44

原创 异常和自定义错误码使用时机

自定义错误类型更适合预期内的错误场景,用户通常需要根据具体错误类型做出不同响应。// ✅ 选择错误码public:// 文件可能存在也可能不存在,这是预期的情况if (!file) {// 返回bool表示是否存在// 预期内可能出现的多种错误Success,DiskFull,FileLocked// 检查路径// 模拟磁盘满if (!file) {// 使用示例} else {break;break;break;

2026-03-03 21:28:32 38

原创 Qt 捕获应用程序未知异常的方法

而不是依赖全局捕获来恢复程序。

2026-03-03 21:01:08 110

原创 QTestLib学习

QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。

2026-02-11 08:55:18 385

原创 年薪百万工程师的实战设计模式秘籍

支付系统需要支持多种支付方式,每种支付方式的业务逻辑不同。:电商系统的商品创建,不同类别的商品有不同的属性和验证规则。:确保团队理解为什么用这个模式。:现实项目通常是多个模式组合。:随着业务变化,可能需要重构。:订单状态变化通知系统。:简单问题用简单方案。

2025-12-29 14:36:43 270

原创 CRUD模式详解

/ 前置声明// 数据库配置结构// 主机地址int port;// 端口// 用户名// 密码// 数据库名// SQLite文件名// 完整连接字符串// 创建默认配置// 数据库连接状态CONNECTED,ERROR// 数据库操作结果// 抽象数据库接口public:// 连接管理// 事务管理// 执行SQL// 参数化查询(防止SQL注入)// 获取结果集。

2025-12-29 09:19:47 451

原创 AI 提问总结

3.利用特定结构组成提示语。1.根据问题匹配角色。2.构建AI身份背景。

2025-12-17 10:43:12 143

原创 C++ 构造函数完全指南

没有参数或所有参数都有默认值的构造函数。1.2 参数化构造函数(Parameterized Constructor)带有参数的构造函数。1.3 拷贝构造函数(Copy Constructor)用同类型的另一个对象初始化新对象。1.4 移动构造函数(Move Constructor)(C++11)将资源从一个临时对象转移到新对象。1.5 委托构造函数(Delegating Constructor)(C++11)一个构造函数调用同类的另一个构造函数。1.6 继承构造

2025-12-16 17:05:06 486

原创 C++模板参数与可变参数模板

编写通用库(STL容器、算法)性能关键路径(编译时优化、零成本抽象)类型安全需求(防止逻辑错误)减少代码重复(DRY原则)编译时计算(常量表达式、元编程)策略模式实现(编译时策略选择)表达式优化(延迟计算、避免临时对象)模板是现代C++的核心特性,正确使用可以:提高代码复用性增强类型安全性优化运行时性能实现编译时计算创建灵活且高效的抽象理解何时以及如何使用模板,是成为高级C++开发者的关键技能。v。

2025-12-08 21:18:27 1060

原创 Qt C++11/14/17 新特性大全详解

在Qt 6开发中,充分利用这些特性可以写出更安全、更高效、更易维护的代码。是生产力飞跃,提供全新编程范式。提高模板代码的可读性。是基础,必须完全掌握。是优化,让代码更简洁。

2025-12-05 09:45:02 347

原创 构建(build)和安装(install)有什么区别

产品在商店里的摆放位置(方便顾客购买)= 产品在工厂里的存放位置(方便质检)你把厨房桌子上的菜端到餐厅的餐桌上。(把产品放到商店货架/餐厅餐桌上)做完的菜放在厨房的桌子上(这就是。:你自己先尝一口,看看味道对不对。厨房就是你的"构建目录"(比如。餐厅餐桌就是系统标准位置(比如。:让全家人(所有用户)都能吃到。你在厨房里洗菜、切菜、炒菜。,不需要把程序装到系统里。(在工厂/厨房里制造)

2025-12-02 08:59:37 334

原创 CMakeLists.txt编译成项目

检查编译器(Visual Studio、GCC、Clang 等):根据 CMakeLists.txt 中的配置设置各种编译选项。:运行 CMake 来配置项目和生成构建文件。文件(Visual Studio 项目)运行 MOC(元对象编译器)处理 Qt 类。在 Linux/macOS 上:生成。:在当前目录(build)中执行构建。运行 RCC(资源编译器)处理。可能还会生成相关的 DLL 文件。检查系统架构(32位/64位)在 Windows 上:生成。在 Windows 上生成。检查依赖库(如 Qt)

2025-11-27 20:59:43 144

原创 QRC文件详细介绍

QRC文件是Qt的资源系统配置文件,使用XML格式。它允许开发者将各种资源(如图像、QML文件、翻译文件等)编译进应用程序二进制文件或dll文件中。//DLL中嵌入资源的示例MyApp/├── App.pro # 主项目文件├── main.cpp # 主程序├── StudentModule/ # 学生模块(DLL)│ ├── resources.qrc # 模块专用资源│ └── qml/├── StatisticsModule/ # 统计模块(DLL)│ └── qml/

2025-11-27 20:31:13 570

原创 Qt 注释

文档注释,使用的是Doxygen风格的注释格式。2.Qt中,类似于C#的。

2025-11-26 09:03:16 157

原创 QML 常用控件大全

【代码】QML 常用控件大全。

2025-11-20 20:41:48 339

原创 QML Property

Property 是 QML 对象的状态数据成员,具有以下特点:可读可写(大多数情况下)支持数据绑定变化时发出通知信号可以在 QML 和 C++ 中访问Item {// 使用自定义类型Item {name: "张三"age: 20Item {id: person// 自定义信号// 使用})Item {// 验证 email 格式if (!Q_OBJECT。

2025-11-19 20:55:42 310

原创 QQmlContext 是什么

数据桥梁:将 C++ 中的暴露给 QML 界面双向通信:QML 可以读取模型数据,也可以调用模型方法响应式更新:当模型数据变化时,通过信号-槽机制自动更新 QML 界面简化代码:避免了繁琐的 C++ 与 QML 通信代码正是通过 QQmlContext,你的应用程序实现了 MVVM 架构中的ViewModel层,让数据模型和用户界面能够高效、解耦地协同工作。

2025-11-18 15:00:40 351

原创 QML 中 model.name 如何一步步变成 C++ 的数据访问

QML 解析属性访问角色映射查询将名称转换为数字IDC++ 调用通过元对象系统调用 data() 方法数据转换将 C++ 类型转换为 QML 可用类型界面更新最终反映到 UI 显示这种机制使得 QML 能够以声明式的方式访问复杂的 C++ 数据模型,同时保持类型安全和良好的性能。

2025-11-13 10:15:29 186

原创 C++ 中 const 的各种位置和含义

成员函数:尽可能声明为const参数:对于大对象使用const &,避免拷贝返回值:根据需要返回const &或值成员变量:真正不变的量才声明为const指针:根据需要选择合适的const组合理解这些不同的const用法对于编写正确、高效和安全的 C++ 代码至关重要。

2025-11-12 14:15:08 188

原创 QAbstractItemModel 详细解析

是 Qt 模型/视图架构的核心基类,它定义了项模型与视图和委托交互的标准接口。这个类为所有数据模型提供了统一的抽象接口。

2025-11-12 13:45:55 172

原创 Q_PROPERTY 宏详细解析

Q_PROPERTY是 Qt 框架中一个非常重要的宏,用于在 QObject 派生类中声明属性。这些属性可以在 Qt 的元对象系统中使用,支持信号与槽机制、动态属性访问、样式表等多种功能。

2025-11-06 21:35:23 380

原创 QAbstractListModel 详细解析

是 Qt 框架中为列表视图提供数据的抽象基类,它是的简化版本,专门用于一维列表数据。QObjectQ_OBJECTpublic:IconRole,StatusRole// 必须实现的方法if (!default:// 自定义方法return;return;

2025-11-06 21:20:15 451 1

原创 C++解耦合

可测试性:可以轻松模拟依赖进行单元测试可维护性:修改一个模块不影响其他模块可扩展性:容易添加新功能代码复用:组件可以在不同场景重用团队协作:不同团队可以并行开发不同模块选择哪种解耦合方式取决于具体场景:需要运行时多态:使用接口抽象需要事件通知:使用观察者模式或事件系统需要算法切换:使用策略模式需要异步处理:使用消息队列需要编译时优化:使用模板。

2025-10-23 16:51:09 228

原创 回调函数的概念

回调函数的本质是"你定义,我调用" - 你提供一个函数,系统或框架在特定时机调用它。回调函数是C++中实现事件驱动编程和异步编程的重要工具,在现代C++开发中广泛应用。: 可以在运行时决定执行什么代码。在多线程环境中要注意线程安全问题。避免过深的回调嵌套(回调地狱): 将调用者和被调用者分离。比原始函数指针更安全灵活。注意回调函数的生命周期管理。: 容易添加新的回调函数。: 非常适合异步编程模式。

2025-10-23 16:44:55 401

原创 std::function

/ std::function 的基本语法std::function<返回值类型(参数类型1, 参数类型2, ...)> func;类型安全高度灵活,可以包装各种可调用对象标准库支持,易于使用适合回调系统和事件驱动编程有一定的性能开销(类型擦除、动态分配)比原始函数指针或 auto 变量占用更多内存空状态检查很重要,避免调用空函数回调函数系统事件处理策略模式实现需要运行时多态的函数存储。

2025-10-23 16:20:23 177

原创 std::bind

参数绑定和部分应用参数顺序重排成员函数绑定创建适配器函数灵活的参数绑定标准库支持类型安全语法相对复杂现代 C++ 中 lambda 通常是更好的选择有一定的性能开销在 C++11 之后的代码中,对于简单情况优先使用 lambda 表达式,因为:语法更清晰性能更好更直观易读但在需要复杂参数绑定或与旧代码集成时,std::bind 仍然很有用。

2025-10-23 16:06:49 227

原创 c++深拷贝和浅拷贝理解

当类中有动态分配的资源(如指针、文件句柄等)时,需要实现深拷贝。

2025-07-12 16:14:04 447

原创 qt 正则表达式

qt有QRegExp类和QRegularExpression类,目前QRegExp类已弃用。正则表达式是一种特殊的字符串模式,用来描述匹配一组字符的规则。

2025-07-12 16:05:32 395

原创 Qt 设置软件版本信息

大部分的程序在运行之后都会提供一个关于的按钮,通过点击该按钮并弹出一个关于界面,则可以查看相关的程序信息。此关于界面为用户自定义的一个界面。或者可以在主界面的右下角显示出当前软件的版本信息。两种方式之间并不冲突。

2025-06-17 13:55:16 1085

原创 Qt程序启动动画

/ 半透明覆盖层");// 主布局// 顶部留空区域// 消息标签m_messageLabel = new QLabel("正在初始化应用程序...", overlay);");// 加载图标// 进度条"}""}");// 启动动画update();update();

2025-06-17 11:18:45 521

原创 gyq错题--护理三基

A、  冠状动脉造影术B、  心腔造影C、  经皮腔内冠状动脉成形术D、  冠状动脉搭桥术。

2025-06-16 21:44:26 174

原创 GitLab学习

可以为不同设备生成不同的密钥对,并随时在 GitLab 中撤销某个密钥的访问权限(例如设备丢失时)。如果你更换设备,只需在新设备上生成密钥并添加到 GitLab 账户即可。:SSH 密钥可以绑定到你的 GitLab 账户,只有。GitLab 配置 SSH 密钥的主要目的是为了。持有对应私钥的计算机。

2025-06-09 15:25:40 637

原创 DeepSeek学习

client.chat.completions.create参数。

2025-02-25 10:13:31 732

原创 ROS学习

存放项目开发相关文件的文件夹;

2025-02-14 11:36:05 921

原创 C#委托入门

利用委托,将变化的生产方法进行委托。

2024-12-15 21:25:36 561

原创 Modbus TCP

Modbus TCP 格式示例:0x00 0x010x00 0x000x00 0x060x010x030x030x00 0x000x00 0x02示例:假设你要从单元 ID 为 1 的设备读取从地址 0 开始的 10 个线圈的状态。构建的请求可能如下:|

2024-09-22 20:40:48 2311 1

空空如也

空空如也

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

TA关注的人

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