- 博客(294)
- 收藏
- 关注
原创 QT斗地主游戏(主控制器)
view/ // 界面布局文件- controller/ // 业务控制器- model/ // 数据模型- socket模块化设计:通过分离网络层、业务层、界面层提升代码复用性健壮性保障:TCP粘包处理、心跳检测(代码未展示)确保通信稳定资源管理:使用安全释放Qt对象,避免内存泄漏Qt特性运用信号槽实现松耦合QSS样式表美化界面(文档8)无边框窗口+自定义标题栏(文档7-8)分层架构设计TCP可靠通信Qt信号槽机制工厂模式应用。
2025-04-03 06:30:00
691
原创 QT斗地主游戏(卡牌类及核心规则实现)
本项目是基于C++/QT框架开发的斗地主游戏,支持网络通信、牌型判断、游戏流程控制及图形化交互。代码结构采用模块化设计,核心模块包括卡牌数据模型牌型规则判断游戏流程管理网络通信及UI交互。以下是核心模块的技术解析与实现思路。
2025-04-02 06:30:00
635
原创 QT基础2
建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。建造者模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
2025-04-01 08:59:57
431
原创 QT象棋棋盘
这段代码实现了一个简单的中国象棋棋盘界面,用户可以在棋盘上点击鼠标,在点击位置绘制一个红色的圆形棋子,并显示 “车” 字。主要使用了 Qt 的绘图功能和事件处理机制。
2025-04-01 07:00:00
396
原创 QT斗地主游戏(通信基层搭建)
该代码实现了一个完整的网络游戏基础框架,具备良好的扩展性,后续可在各业务模块(如Game_Server)补充具体游戏逻辑即可实现完整斗地主功能。支持JSON数据收发,按标题(title)分发到不同模块(login/user/game)实现消息分帧协议(4字节长度头 + JSON数据)各Server模块通过信号槽接收/发送JSON数据。基于QTcpSocket封装TCP通信。处理消息分帧(4字节长度头)跨线程/跨模块通信解耦。基础TCP服务器实现。支持多客户端连接管理。
2025-03-31 06:15:00
1579
原创 QT斗地主游戏(头像管理)
这些模块共同支撑了斗地主游戏中的用户资料管理功能,是玩家交互体验的基础组件。:头像与 Base64 字符串的互相转换,用于网络传输或数据库存储。:管理用户 ID、昵称、头像等基础信息。:本地头像文件的存储与获取。:数据模型类,封装用户的。
2025-03-31 06:00:00
414
原创 C++基础10
智能指针封装了原生指针,并提供了自动释放所管理对象的机制,以确保在适当的时候删除所指向的对象,从而防止内存泄漏和其他相关问题。3、指针操作:在类外实例化一个类的对象,定义一个类的指针,并将其赋值为该对象的地址。关联容器中元素的键必须是可比较的。3、priority_queue:优先级队列适配器,虽然也是从一端进、另一端出,但每次访问或删除的都是优先级最高的元素,而不是最先进入的元素。1、自动内存管理:智能指针能够自动删除它们所指向的对象,当智能指针离开其作用域或被重置时,它们会自动释放所管理的内存。
2025-03-30 07:30:00
310
原创 QT基础1
Model/View框架中数据与显示的分离,可以允许使用不同界面显示同一数据,也能够在不改变数据的情况下添加新的显示界面。Model/View框架的核心思想是模型(数据)与视图(显示)相分离,模型对外提供标准接口存取数据,不关心数据如何显示,视图自定义数据的显示方式,不关心数据如何组织存储。"connect"函数的参数中通常有五个参数,其中第五个参数通常是一个指向槽函数的指针,用于在连接建立后调用相应的槽函数进行处理。Qt机制的核心:信号与槽、元对象系统、事件模型。6、支持按层检索的对象树。
2025-03-30 07:00:00
317
原创 C++基础 8
定义函数模板的一般格式如下:template <模板参数表>返回类型名 函数模板名(参数表)函数体的定义函数模板的定义以关键字 template 开头,该关键字之后是使用尖括号<>括起来的“模板参数表”。模板参数表的写法和函数形参列表的写法是很相似的,由用逗号分隔的模板参数构成,形式是“类型 参数名,类型 参数名,……”, 这块的类型是关键字class(或typename)。模板类要以 template代码开头,template关键字告诉编译器要定义一个模板,
2025-03-29 07:00:00
156
原创 C++基础9
仿函数,也称为函数对象,是一种编程概念,尤其在C++中广泛应用。它实际上是一个重载了函数调用运算符operator()的类或结构体。这使得仿函数可以像普通函数一样被调用,但同时又具有类的特性,如可以存储和访问数据。仿函数的主要优点在于其灵活性和可复用性。它们可以保存状态,并在运行时动态地改变行为。此外,仿函数比普通函数指针更为灵活,因为它们可以指向函数、类成员函数以及lambda表达式。这使得仿函数在算法、STL容器以及其他需要函数对象的场合中非常有用。
2025-03-29 07:00:00
846
原创 QT登录注册模块(服务端)
本代码实现了一个基于TCP协议的C/S架构服务端模块,主要用于处理客户端的登录和注册请求。GUI管理界面:提供可视化操作面板网络通信模块:基于QTcpServer实现多客户端连接状态监控系统:实时显示服务器运行状态日志记录功能:记录关键操作和通信事件服务控制功能:支持服务器重启操作表示层:ServerWindow类构建的GUI界面业务逻辑层:网络通信处理与请求响应数据访问层(需扩展):用户信息存储模块。
2025-03-28 09:08:30
1078
原创 QT登录注册模块(客户端)
本模块采用典型的C/S架构设计,客户端使用Qt框架实现GUI界面和本地数据交互功能。实现会话保持(Cookie/JWT Token)支持HTTPS安全传输。
2025-03-28 08:58:16
868
原创 QT学习笔记(进程与多线程)
启动外部进程核心类QProcess作用: 执行系统命令或外部程序,支持参数传递和输入输出控制。示例代码cppCopy// 指定可执行程序路径// 参数列表// 添加参数// parent 用于自动内存管理// 同步执行(阻塞当前线程)// 或 myProcess->start(program, arguments);// 异步执行(非阻塞)注意事项使用start()异步执行时需监听started()finished()信号。通过和获取输出。错误处理:监听信号。
2025-03-27 08:44:34
608
原创 QT学习笔记(文件编程)
cpp复制// 递归子目录} else {文本处理优先使用,简化编码和逐行操作。大文件操作使用QFile分块读写,避免内存溢出。跨平台路径:用代替获取系统分隔符。异常处理:始终检查open()返回值,记录错误日志。性能优化:遍历目录时避免重复获取元数据。
2025-03-26 14:08:36
368
原创 QT记事本
记事本应用程序提供了基本的文本编辑功能,支持文件的新建、打开、保存和另存为操作,同时具备修改提示和关闭窗口时的保存确认功能。使用 UTF - 8 编码确保了对多语言文本的支持。
2025-03-26 08:57:21
1029
原创 QT学习笔记(事件机制)
机制关键API应用场景事件处理重写xxxEvent()函数自定义控件行为绘图事件QPainter定制UI绘制事件过滤跨组件事件监控/拦截。
2025-03-25 07:00:00
241
原创 QT学习笔记(标签与按钮)
同一父容器内的单选按钮互斥,只能选一个。统一控件风格(如字体、颜色、边框)。:自定义样式(颜色、圆角等)。:对象标识(用于代码访问)。接收用户操作,触发事件。
2025-03-21 08:42:21
283
原创 基于Qt的图片查看器
cppQ_OBJECT继承关系MainWindow继承自,具备主窗口的所有功能(如菜单栏、状态栏等)。Q_OBJECT宏:启用 Qt 的元对象系统,支持信号槽机制、动态属性等高级功能。是图片播放器的核心头文件,它定义了主窗口的结构、功能和交互逻辑。通过继承界面初始化与样式设置。图片目录的验证与加载。图片的切换显示与窗口自适应。这段代码为后续的实现文件()提供了清晰的框架,是理解整个图片播放器工作原理的基础。
2025-03-21 07:00:00
460
原创 我的创作纪念日
技术的魅力在于分享,愿我们共同在嵌入式世界的0和1之间,编织出无限可能!通过写作反哺知识体系,形成良性循环。我成为技术创作者的初心源于。
2025-03-20 14:01:21
399
原创 QT学习笔记(信号与槽)
对象在特定事件发生时发出的通知(如按钮被点击、数据更新)。:接收信号并执行具体操作的函数(如更新界面、处理数据)。信号(Signal)
2025-03-20 13:50:36
692
原创 QT学习笔记3
场景(QGraphicsScene)图形项(QGraphicsItem)视图(QGraphicsView)QPainter工作流程。顶点缓冲对象(VBO)
2025-03-19 08:47:24
598
原创 QT 学习笔记2
主窗口开发:优先使用框架,结合Dock部件和状态栏提升用户体验。事件处理:善用事件过滤器和自定义事件实现模块解耦。内存管理:遵循Qt对象树规则,避免内存泄漏。界面优化:通过QSS和自定义绘制实现品牌化视觉效果,同时注意跨平台兼容性测试。
2025-03-18 13:54:46
931
原创 C++基础7
这样,当类的对象在创建时便拥有了这个指针,且这个指针的值会自动被设置为指向类的虚表。(2)static数据成员只能在类的外部进行初始化(特例:当整型const、static数据成员被常量表达式初始化时,就可以在类的内部进行初始化,但还需要在外部进行定义)。(1)static数据成员在类的内部声明,但只能在类的外部定义,在类的外部不能指定static,在类的定义时候进行初始化;(2)static成员函数既可以在类的内部定义,也可以在类的外部定义,在外部定义时,不能重复指定static保留字。
2025-03-17 10:36:35
750
原创 C++基础6
从语法角度上来说,protected继承会将父类中的public可见性的成员修改成为protected可见性,相当于在子类中引入了protected成员,这样在子类中同样还是可以调用父类的protected和public成员,子类的子类也就可以调用被protected继承的父类的protected和public成员。虚函数的实现:在有虚函数的类中,类的最开始部分是一个虚函数表的指针,这个指针指向一个虚函数表,表中放了虚函数的地址,实际的虚函数在代码段(.text)中。所有有效的C程序都是有效的C++程序。
2025-03-17 10:33:01
663
原创 高速PCB设计(封装创建)
针对0.4mm pitch的BGA,采用非阻焊定义(NSMD)焊盘设计(直径0.25mm),阻焊开窗单边扩展0.05mm,可降低焊盘与基材的应力集中。:对高速连接器焊盘(如PCIe Gen6),采用45°倒角设计,结合共面波导结构(HFSS仿真验证),使阻抗突变控制在±5%以。:通过HFSS优化差分焊盘宽度/间距(5/5mil),配合接地过孔阵列(间距0.6mm)实现阻抗100Ω±5%:在数据组(DQ0-DQ63)焊盘间插入地孔(间距1.5mm),形成局部屏蔽腔,降低SSN噪声30%
2025-03-16 07:00:00
672
原创 高速PCB设计(符号创建规范)
对PCIe Gen4符号添加预加重(Pre-emphasis)和均衡(Equalization)参数字段,支持3.0dB/6.0dB多级配置。推荐采用"菊花链+Fly-by"拓扑结构,通过符号中的网络标号颜色区分Bank(如蓝色=Bank0,红色=Bank1)对0.8V核心电源采用紫色粗线+闪电符号标注,3.3V电源使用红色双线+电池符号,在原理图阶段即实现电压域视觉隔离。在DP/DM_N/P引脚添加<±>标记的同时,内置阻抗参数(如90Ω±10%)和眼图模板要求(如UI=400ps)
2025-03-16 06:00:00
755
原创 高速PCB设计(丝印调整与Gerber输出)
水平放置于元件面,正反面均需存在,字符尺寸大于普通丝印(宽度10 Mil,高度80 Mil)。尺寸22.5mm×6.5mm,周围20mm内无高度>25mm的元件,避免导通孔(需绿油覆盖)。:二极管、BGA等需明确标注极性符号(如“+”、“1脚”),稳压二极管正极标记接低电压端。字符与阻焊间距 >6 Mil;精度:5:5(AD为2:5)。禁止字符重叠或覆盖元器件,阴字(反白)线宽 >8 Mil。层命名规范(ART/PWR/GND前缀),与工艺文档一致。字符仅允许两个方向(如0°和90°),位号排列遵循。
2025-03-15 07:00:00
576
原创 高速PCB设计(封装规范)
仅允许字母、数字、短横线(-)和下划线(_),避免因特殊字符导致EDA工具解析错误。表示0.5mm间距,可快速计算差分对阻抗(如100Ω需线宽/间距=5/5mil)在高速PCB设计中,封装命名不仅是标识符,更是**信号完整性(SI))提示需增加相邻焊盘间距至3W规则(W为线宽),降低串扰风险。(过孔间距≤λ/10,@最高工作频率),形成低阻抗回流路径。,依次表示功能、工艺、引脚数、尺寸、焊盘间距、热焊盘参数。:统一采用公制(mm),尺寸精确到小数点后两位(如。(寄生电感≤0.5nH),并在原理图中标注。
2025-03-15 07:00:00
533
原创 C++ 基础5
1、重载是指同一可访问区内被声明几个具有不同参数列(参数的类型、个数、顺序)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。2.线程安全:shared_ptr在修改内部引用计数时是线程安全的,但是通过shared_ptr访问对象的成员不是线程安全的,除非另外加锁。2、函数隐藏是指派生类的函数屏蔽了与其同名的基类函数,只要是与基类同名的成员函数,不管参数列表是否相同,基类函数都会被隐藏。1、默认成员访问权限:struct的成员默认是public的,而class的成员默认是private的。
2025-03-14 09:24:40
500
原创 C++ 智能指针
核心概念本质是重载了->和操作符的类自动管理动态分配的内存资源保证异常安全,避免内存泄漏C++11 智能指针类型类型特点头文件unique_ptr独占所有权,不可复制<memory>shared_ptr共享所有权,引用计数机制<memory>weak_ptr弱引用,解决循环引用问题<memory>与传统指针对比cpp// 传统指针(需手动管理)delete p;// 智能指针(自动管理)特性unique_ptrshared_ptrweak_ptr所有权独占共享。
2025-03-14 07:00:00
1640
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人