自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zy100Papa的博客

这个博客是我技术成长的见证,记录了我在编程、算法、架构等领域的点滴。如果你也在技术的道路上前行,欢迎来这里交流、分享,一起探索未知的边界。让我们用代码书写未来,用技术连接世界。

  • 博客(178)
  • 资源 (6)
  • 收藏
  • 关注

原创 软件开发必会技能:简单工厂模式、工厂方法模式、抽象工厂模式,这一篇就够了

工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。一、简单工厂模式简单工厂模式,工厂类是创建产品的,它决定创建哪一种产品。举个例子,在上下位机通信应用程序中,一般都会要求软件支持多种连接方式,网口、串口等。这时我们去设计软件的话第一想到的是简单工厂模式,由工厂决定创建哪种连接方式,且同一时间只能创建一种连接模式。#include <QCoreApplication>#include <QDebug>// 通信设备接口类class Device{pu

2021-12-11 16:19:46 2979

原创 Hp-Socket高性能网络库介绍零--整体结构

一、目录结构介绍--DOC:目录下是官方提供的文档,包括Development Guide--DotNet:.net项目的开发步骤,可以直接通过nuget部署HPsocket.net--Linux:Linux的工程,包括android build--MacOS:mac环境的开发步骤--Windows:Windows的工程,最常用的开发环境--Bin:编译好的dll和lib--Demo:官方提供的使用示例,包括PUSH模型示例、 PULL模型示例、 PACK模型示例、 性能测.

2021-03-31 18:26:00 7634 4

原创 vs2010下配置HPSocket教程,详细截图附入门demo源码

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 A...

2019-07-05 16:11:47 6139

原创 Qt图形视图框架5-状态机框架

状态机框架为系统如何响应外部激励提供了图形化模型,通过定义系统可能进入的状态以及状态间的转换规则,直观表达系统行为。事件驱动响应:系统行为不仅依赖当前事件,还与历史状态相关分层结构设计:状态可以嵌套,形成层次化状态图信号驱动转换:与Qt元对象系统深度集成,状态转换可由信号触发异步执行机制:作为应用程序事件循环的一部分运行Qt状态机框架提供了一种直观且高效的方式来管理事件驱动系统中的复杂状态逻辑。通过图形化模型表达系统行为,开发者可以更清晰地设计和实现复杂交互逻辑,同时提高代码的可维护性和可测试性。

2025-07-15 17:04:15 469

原创 Qt 图形视图框架4-动画、碰撞检测和图形项组

/ main.cpp中添加定时器触发场景更新。动画系统,因为动画系统依赖于。直接在myItem.h中定义。的属性系统和信号槽机制。

2025-07-08 09:02:30 685

原创 Qt 图形视图框架3-事件处理与传播

提供管理大量图形项的场景,是图形项的容器。:表示场景中的图形项,如矩形、椭圆等,是所有图形项的基类。:提供一个视口,用于显示场景中的图形项,支持缩放、平移等操作。通过本文的介绍,我们了解了Qt图形视图框架下事件处理和传播,焦点管理的基本理论知识。事件处理允许我们对用户的各种操作做出响应,而事件传播机制确保了事件能够在图形项、场景和视图之间正确传递。在实际开发中,我们可以根据具体需求重写相应的事件处理函数,实现丰富的交互效果。同时,合理利用事件传播机制可以避免代码的重复编写,提高开发效率。

2025-07-08 08:40:06 1282

原创 Qt 图形视图框架2-坐标系统

通过这个例子,你可以看到如何在中处理鼠标事件,并使用坐标映射函数来获取光标下的图形项及其在不同坐标系统中的位置。这些函数在处理复杂的图形交互时非常有用,尤其是在需要在不同坐标系统之间进行转换时。图形视图框架允许在视图、场景、图形项之间以及子图形项、父图形项或图形项之间进行坐标映射。所有映射函数如表所示,可映射点、矩形、多边形和路径。映射函数描述从视图坐标系统映射到场景坐标系统从场景坐标系统映射到视图坐标系统从图形项的坐标系统映射到场景的坐标系统从场景的坐标系统映射到图形项的坐标系统。

2025-07-03 17:21:30 877

原创 Qt 图形视图框架功能详解QGraphicsScene、QGraphicsView 和 QGraphicsItem

在 main.cpp 文件中先添加头文件运行程序可以看到自定义的图形项(如红色小方块)出现在了视图的正中间,背景图片的位置也有所变化,这些问题会在后续的坐标系统中进行讲解。如果只想添加简单的图形项,也可以直接使用图形视图框架提供的标准图形项,它们的效果如图所示。标准图形项通过上述步骤,即可实现自定义的图形项,满足在 Qt 图形视图框架中展示个性化图形元素的需求,为各种复杂图形界面应用开发提供基础。通过和。

2025-07-02 11:01:17 1426

原创 QPainter绘图基础4-绘制图像和双缓冲绘图

Qt提供了4个类来处理图像数据,他们4个都是常用的绘图设备。绘图设备类名功能特点及用途QImage主要用于 I/O 处理,对 I/O 操作进行了优化,可直接访问和操作像素QPixmap主要用于在屏幕上显示图像,对屏幕显示图像进行了优化QBitmap是 QPixmap 的子类,用于处理颜色深度为 1 的图像,只能显示黑白两种颜色QPicture用于记录并重演 QPainter 命令这段代码展示了如何使用QPainter在不同的绘图设备(QImageQPixmapQBitmap和QPicture。

2025-07-01 16:05:18 1062

原创 QPainter绘图基础3-使用QPainterPath绘制路径

QPainterPath类为绘制操作提供了一个容器,可以用来创建图形并且重复使用。一个绘图路径就是由多个矩形、椭圆、线条或者曲线等组成的对象,一个路径可以是封闭的,如矩形和椭圆;也可以是非封闭的,如线条和曲线。比如有一个这样需求:要绘制一个复杂的图形,尤其是要重复绘制这样的图形,可以使用QPainter-Path类,并使用QPainter::drawPath()进行绘制。

2025-06-30 17:14:34 522

原创 QPainter绘图基础2-定时器和2D绘图结合实现简单动画

angle。

2025-06-30 16:17:19 365

原创 QPainter绘图基础

前面已经讲过,更改逻辑坐标或者物理坐标的矩形就是进行坐标的一个线性变换,逻辑坐标矩形的4个角会映射到对应物理坐标矩形的4个角。一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x 坐标向右增长,y 坐标向下增长。这样逻辑坐标的(-50,-50)点就会对应物理坐标的(0,0)点,因为这里是在 this(即 Widget 部件上)进行绘图,所以 Widget 就是绘图设备。现在运行程序可以看到,在(0,0)点绘制的矩形实际在(400,300)点,而矩形的宽和高也不再是20,而变为了160和120。

2025-06-30 14:52:32 1037

原创 QPainter绘图基础

前面已经讲过,更改逻辑坐标或者物理坐标的矩形就是进行坐标的一个线性变换,逻辑坐标矩形的4个角会映射到对应物理坐标矩形的4个角。一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x 坐标向右增长,y 坐标向下增长。这样逻辑坐标的(-50,-50)点就会对应物理坐标的(0,0)点,因为这里是在 this(即 Widget 部件上)进行绘图,所以 Widget 就是绘图设备。现在运行程序可以看到,在(0,0)点绘制的矩形实际在(400,300)点,而矩形的宽和高也不再是20,而变为了160和120。

2025-06-30 14:41:27 594

原创 QPainter绘图基础2

前面已经讲过,更改逻辑坐标或者物理坐标的矩形就是进行坐标的一个线性变换,逻辑坐标矩形的4个角会映射到对应物理坐标矩形的4个角。一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x 坐标向右增长,y 坐标向下增长。这样逻辑坐标的(-50,-50)点就会对应物理坐标的(0,0)点,因为这里是在 this(即 Widget 部件上)进行绘图,所以 Widget 就是绘图设备。现在运行程序可以看到,在(0,0)点绘制的矩形实际在(400,300)点,而矩形的宽和高也不再是20,而变为了160和120。

2025-06-30 14:40:05 604

原创 QPainter绘图基础

本文介绍了Qt绘图系统的核心组件,包括QPainter、QPaintDevice和QPaintEngine类,以及2D绘图的基本使用方法。主要内容涵盖:1)基本图形绘制和填充,演示了线条、圆弧、椭圆等图形的绘制及画笔设置;2)坐标系统原理,说明逻辑坐标与物理坐标的映射关系;3)坐标变换功能,支持仿射变换实现旋转、缩放等效果。文章通过示例代码展示了如何利用QPainter在Qt窗口部件上进行图形绘制,并简要介绍了渐变填充和坐标变换等高级特性。这些功能为Qt应用程序的图形界面开发提供了强大的支持。

2025-06-30 09:00:00 1522

原创 QPainter绘图基础

前面已经讲过,更改逻辑坐标或者物理坐标的矩形就是进行坐标的一个线性变换,逻辑坐标矩形的4个角会映射到对应物理坐标矩形的4个角。一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x 坐标向右增长,y 坐标向下增长。这样逻辑坐标的(-50,-50)点就会对应物理坐标的(0,0)点,因为这里是在 this(即 Widget 部件上)进行绘图,所以 Widget 就是绘图设备。现在运行程序可以看到,在(0,0)点绘制的矩形实际在(400,300)点,而矩形的宽和高也不再是20,而变为了160和120。

2025-06-30 09:00:00 608

原创 使用QGraphicsView,QGraphicsScene,QPainterPath等绘制圆柱体和液体效果

本文介绍了如何使用 Qt 框架中的 QGraphicsView、QGraphicsScene 和 QPainterPath 等组件绘制圆柱体和液体效果。首先,通过 QGraphicsScene 管理图形项,并使用 QGraphicsView 显示场景内容。接着,详细讲解了如何绘制圆柱体的顶部、底部和侧面,并通过 QPainterPath 的 moveTo 和 cubicTo 函数实现液体表面的波浪线效果。此外,文章还探讨了如何通过定时器和交互功能增强可视化效果,并提出了在游戏开发中应用该技术的可能性。最后,

2025-05-20 09:30:45 854

原创 使用 Qt QGraphicsView/QGraphicsScene 绘制色轮

本文介绍了如何使用 Qt 的和实现圆形及色轮的绘制。通过两种方式实现色轮:一种是通过多个扇形拼接而成,另一种是使用渐变色填充。读者可以根据需求选择合适的实现方式。

2025-05-19 15:01:03 664

原创 【C++编程规范五】命名约定篇 | 资深工程师的编程秘籍

【代码】【C++编程规范五】命名约定篇 | 资深工程师的编程秘籍。

2025-04-30 10:12:48 630

原创 【C++编程规范七】代码格式篇 | 资深工程师的编程秘籍

返回值、函数名及参数尽量写在同一行。示例:ReturnType ClassName::FunctionName(Type par1, Type par2) {...参数过多时换行,参数对齐:ReturnType ClassName::ReallyLongFunctionName(Type par1,Type par2,...要求返回值与函数名同行。函数名与左括号同行。函数名与左括号间无空格。参数与括号间无空格。左大括号在最后一个参数后同行末。右大括号单独占一行。

2025-04-30 09:59:00 1046

原创 【C++编程规范六】代码注释篇 | 资深工程师的编程秘籍

【代码】【C++编程规范】C++ 注释规范黄金法则|资深工程师的编程秘籍。

2025-04-30 09:58:25 1082

原创 【C++编程规范四】C++特性篇 | 资深工程师的编程秘籍

static_cast:和 C 风格转换相似可做值的强制转换,或指针的父类到子类的明确的向上转换;const_cast:移除 const 属性;reinterpret_cast:指针类型和整型或其他指针间不安全的相互转换,仅在你对所做一切了然于心时使用;dynamic_cast:除测试外不要使用,除单元测试外,如果你需要在运行时确定类型信息,说明设计有缺陷(参考 RTTI)。通常情况下,优先使用,因为它最安全;在需要修改const属性时使用const_cast;在确实需要低级指针转换时使用。

2025-04-29 16:24:01 1101

原创 【C++编程规范三】类设计篇 | 资深工程师的编程秘籍

本文整理自Google、微软等大厂代码规范,结合十年开发经验,总结出最实用的C++类设计指南。包含20+代码示例、8个易错场景分析,助你写出专业级代码!

2025-04-29 16:22:39 1051

原创 【C++编程规范二】作用域篇 | 资深工程师的编程秘籍

实践表明,规范的作用域管理可减少35%的模块间耦合问题。

2025-04-29 16:21:24 355

原创 【C++编程规范一】头文件篇 | 资深工程师的编程秘籍

/ 常量定义// 宏定义(谨慎使用)// 常量定义 constexpr int MAX_CONNECTIONS = 100;// 宏定义(谨慎使用) # define DEBUG_LOG(message) \ do {// 常量定义 constexpr int MAX_CONNECTIONS = 100;// 宏定义(谨慎使用) # define DEBUG_LOG(message) \ do {do// 常量定义 constexpr int MAX_CONNECTIONS = 100。

2025-04-29 16:18:12 799

原创 2025 VSCode中如何进行dotnet开发环境配置完整教程

我一直都是用Visual Studio 2019来开发C#项目的,用的比较顺手,也习惯了。看其他技术文章有介绍VS Code更轻量,更方便。所以就想来研究如何使用VS Code,看看它是如何构建代码、调试代码、如何运行C#应用程序。本文将详细介绍如何在VS Code中配置.NET开发环境,演示环境为Windows系统。

2025-04-27 17:09:30 3932

原创 C#中async await异步关键字用法和异步的底层原理

异步方法编译过程回顾再唠唠async方法咋被编译成状态机的,状态机又咋根据await拆分方法、驱动异步操作的。await到底在干啥说白了,await根本不是真的“等待”,而是靠状态机和等待器来实现的异步协作。强调一下异步编程的好处,比如响应快、省资源、能扛更多活儿,还有啥场景适合用它。

2025-04-15 15:32:26 717 1

原创 QML中C++类注册和使用的四中方法

是最常用的注册方式之一,适用于需要在QML中创建多个实例的场景。在QML中注册C++类型的方法有多种,每种方法都有其适用的场景。适用于需要创建多个实例的场景,宏提供了一种简洁的注册方式,适合全局访问的单例对象,而则适合直接暴露C++对象给QML。根据实际需求选择合适的方法,可以更好地实现QML和C++的交互,提高开发效率和代码质量。

2025-04-14 09:55:01 815

原创 QML信号槽处理

在QML中,可以使用signal关键字定义自定义信号。自定义信号可以在需要的时候触发,并连接到槽函数进行处理。定义自定义信号触发自定义信号customSignal("这是一个自定义信号")连接自定义信号到槽函数console.log("接收到自定义信号:", message)完整示例Window {width: 640title: "自定义信号示例"Item {id: myItem// 触发自定义信号customSignal("自定义信号被触发")// 连接自定义信号到槽函数。

2025-04-14 09:50:56 1094

原创 QML访问javascript方法

可以将复杂的逻辑或数据处理代码分离到单独的JavaScript文件中,提高代码的可维护性和可读性。通过在QML文件中导入这些JavaScript文件,可以将这些文件中的函数和变量在QML文件中直接使用。JavaScript可以连接QML中的信号,并在相应的槽函数中执行JavaScript代码。QML中的JavaScript函数可以直接被调用,反之亦然。在QML中,可以定义JavaScript函数来处理事件,如按钮点击事件。需要清楚,.js文件和.qml文件的语法本质上是一样的,因为它们都使用。

2025-04-14 09:48:09 1331

原创 QML中ListView加载大数据

这时候应该使用C++模型或者自定义的抽象模型,只在需要时加载数据,比如QAbstractItemModel的子类,这样可以在后端动态获取数据,而不是一次性加载所有数据。这也是实际开发中非常常用的实现方式。这个方案通过QML的虚拟化列表特性,结合动态加载策略,实现了在保持60FPS流畅滚动的同时,内存占用恒定(与列表长度无关)。但是本篇为了演示方便,暂不用c++模型的方式,而是自定义一个代理模型,只在需要时生成数据,比如根据索引动态生成项的内容,而不是预先存储所有数据,而是按需生成。

2025-04-11 08:00:00 648

原创 QML字体

在 QML 开发中,FontLoader 是一个非常实用的组件,用于动态加载字体。熟练掌握其使用方法和相关技巧,不仅能丰富界面的视觉效果,还能避免因字体问题引发的版权纠纷。下面将详细介绍 FontLoader 的使用背景、方法以及字体版权处理的相关内容。

2025-04-11 07:45:00 755

原创 QML面试自定义button

通过这个例子,你已经了解了如何使用Rectangle和MouseArea来实现一个简单的按钮组件。你可以根据自己的需求来修改和扩展这个例子,以满足你的需求。

2025-04-11 07:00:00 472

原创 QML中component控件使用

在 QML 中, 是一种用于定义可重用组件的机制。它允许你将一段 QML 代码封装成一个独立的组件,然后在其他地方多次使用。 可以定义在独立的 QML 文件中,也可以嵌入到其他 QML 文件中。这种方式特别适合以下场景: 的使用主要有两种方式:嵌入式 :独立文件 :下面写一个简单的示例能帮助你理解如何在 QML 中使用 !首先,定义一个 ,这个组件可以是一个简单的按钮。

2025-04-10 09:00:00 883

原创 QML中访问c++数据,并实现类似C#中mvvm模式详细方法

Model 是数据的来源,通常是一个简单的类,用于存储和管理数据。

2025-04-10 09:00:00 1794 1

原创 QML颜色

width: 100color: "hsl(210, 50%, 50%)" // 使用 HSL 函数设置矩形背景色背景知识:HSL(Hue, Saturation, Lightness)颜色模型是一种基于人对颜色感知的颜色表示方法。色调(Hue)表示颜色的种类,饱和度(Saturation)表示颜色的纯度,亮度(Lightness)表示颜色的明暗程度。这种模型更符合人类对颜色的理解和调整方式。应用场景:在需要基于色调、饱和度和亮度来定义颜色时,HSL 函数更具直观性和可操作性。

2025-04-09 15:36:31 1005

原创 QML程序依赖库dll提取和打包分发

在开发基于QML的应用程序时,编译后的可执行文件(exe)会依赖于一系列的动态链接库(dll)。为了确保程序在不同环境下的正常运行,或者为了对程序进行进一步的分析和优化,提取这些依赖的动态库是非常必要的。通过以上步骤,你可以将QML编写的exe及其依赖的动态库打包成一个专业的安装程序,方便用户进行安装和使用。同时,Inno Setup的灵活性也允许你根据需要进行各种定制化设置。它可以帮助开发者轻松地将应用程序及其依赖文件打包成一个安装包,方便用户进行安装和卸载操作。

2025-04-09 15:34:29 1228

原创 QML面试笔记--UI设计篇06信息展示控件

在移动应用日活超过6.7亿的今天(数据来源:Statista 2023),用户对界面体验的要求达到了前所未有的高度。作为Qt框架的声明式UI语言,QML凭借其‌响应式设计‌、‌硬件加速渲染‌和‌跨平台能力‌,已成为开发高颜值应用的秘密武器。作为使用率高达98%的基础控件(根据Qt官方统计),Text承担着80%的界面文字展示任务,从简单的状态提示到复杂的富文本显示都游刃有余。当需要快速生成星标评级(如5星评价)、标签云等固定布局时,Repeater的性能比ListView高3倍(Qt官方基准测试)。

2025-04-08 11:43:50 534

原创 QML面试笔记--UI设计篇05容器控件

它适合需要通过标签明确指示当前页面的场景,比如多页面应用的导航栏。SwipeView 本身是不可见的,通常需要与页面指示器(如 PageIndicator)结合使用,以显示当前页面的位置。在智能设备井喷的时代,QML容器控件如同"数字乐高",通过巧妙的组合艺术,将简单元素转化为功能强大的交互界面。TabBar 是一个可视化的标签栏,通常显示在页面顶部或底部,提供明确的导航指示。主要通过点击标签按钮进行页面切换,适合需要明确的页面导航和选择的场景。适合需要通过标签导航的场景,比如多页面应用的底部导航栏。

2025-04-08 11:42:13 1798

原创 QML面试笔记--UI设计篇04交互控件

按钮可以通过。

2025-04-08 11:39:50 800

CefMFCDemo.rar

libcef3在vs2017下的配置,window和js交互实现,超详细。因为libcef.dll太大,所以没放到代码中中,大家可以对照教程进行libcef自己编译。

2020-04-07

HPSocketDemo1.rar

今天我把我使用的关于HPSocket部分有关记录下来以备忘。目前最新版本5.7.1,我下载的是5.6.1版本。 1.首先下载HP-Socket-master开发包,里面有所有关于HPSocket相关的文档和DEMO,很全。 2.打开vs2010,新建Win32控制台应用程序,名字HpSocketDemo1; 将HP-Socket-master\Windows目录下Common,Src两个文件夹拷贝到工程目录下; 拷贝HP-Socket-master\Windows\Demo\Global文件夹至工程目录下,如下

2020-09-23

HPSocketDemo1.rar

今天我把我使用的关于HPSocket部分有关记录下来以备忘。目前最新版本5.7.1,我下载的是5.6.1版本。 1.首先下载HP-Socket-master开发包,里面有所有关于HPSocket相关的文档和DEMO,很全。 2.打开vs2010,新建Win32控制台应用程序,名字HpSocketDemo1; 将HP-Socket-master\Windows目录下Common,Src两个文件夹拷贝到工程目录下; 拷贝HP-Socket-master\Windows\Demo\Global文件夹至工程目录下,如下

2020-03-24

CowBoyDemo.rar

本demo程序我们主要介绍CowBoy.Sockets的源码结构,及搭建一个简单的网络服务器的过程。可以看到搭建Tcp的网络服务主要用到源码Tcp目录下的Framing 和 Server部分,这里我们采用APM方式。

2020-03-24

zlib_demo.tar

centos7下安装配置zlib,zlib版本1.2.11,并实现简单的压缩文件,解压缩文件操作的demo,demo的开发环境CLion

2020-03-20

OpenCVCam.rar

选择版本的opencv2.4.9+vs2010,都比较老,但这并不影响功能。主要实现摄像头的打开关闭操作,并实现简单的纸张检测算法。主要用于高拍仪文档识别、扫描等场景。

2020-03-26

空空如也

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

TA关注的人

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