- 博客(165)
- 资源 (6)
- 收藏
- 关注

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

原创 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
7237
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
5892
原创 使用QGraphicsView,QGraphicsScene,QPainterPath等绘制圆柱体和液体效果
本文介绍了如何使用 Qt 框架中的 QGraphicsView、QGraphicsScene 和 QPainterPath 等组件绘制圆柱体和液体效果。首先,通过 QGraphicsScene 管理图形项,并使用 QGraphicsView 显示场景内容。接着,详细讲解了如何绘制圆柱体的顶部、底部和侧面,并通过 QPainterPath 的 moveTo 和 cubicTo 函数实现液体表面的波浪线效果。此外,文章还探讨了如何通过定时器和交互功能增强可视化效果,并提出了在游戏开发中应用该技术的可能性。最后,
2025-05-20 09:30:45
120
原创 使用 Qt QGraphicsView/QGraphicsScene 绘制色轮
本文介绍了如何使用 Qt 的和实现圆形及色轮的绘制。通过两种方式实现色轮:一种是通过多个扇形拼接而成,另一种是使用渐变色填充。读者可以根据需求选择合适的实现方式。
2025-05-19 15:01:03
164
原创 【C++编程规范七】代码格式篇 | 资深工程师的编程秘籍
返回值、函数名及参数尽量写在同一行。示例:ReturnType ClassName::FunctionName(Type par1, Type par2) {...参数过多时换行,参数对齐:ReturnType ClassName::ReallyLongFunctionName(Type par1,Type par2,...要求返回值与函数名同行。函数名与左括号同行。函数名与左括号间无空格。参数与括号间无空格。左大括号在最后一个参数后同行末。右大括号单独占一行。
2025-04-30 09:59:00
671
原创 【C++编程规范四】C++特性篇 | 资深工程师的编程秘籍
static_cast:和 C 风格转换相似可做值的强制转换,或指针的父类到子类的明确的向上转换;const_cast:移除 const 属性;reinterpret_cast:指针类型和整型或其他指针间不安全的相互转换,仅在你对所做一切了然于心时使用;dynamic_cast:除测试外不要使用,除单元测试外,如果你需要在运行时确定类型信息,说明设计有缺陷(参考 RTTI)。通常情况下,优先使用,因为它最安全;在需要修改const属性时使用const_cast;在确实需要低级指针转换时使用。
2025-04-29 16:24:01
951
原创 【C++编程规范三】类设计篇 | 资深工程师的编程秘籍
本文整理自Google、微软等大厂代码规范,结合十年开发经验,总结出最实用的C++类设计指南。包含20+代码示例、8个易错场景分析,助你写出专业级代码!
2025-04-29 16:22:39
956
原创 【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
641
原创 2025 VSCode中如何进行dotnet开发环境配置完整教程
我一直都是用Visual Studio 2019来开发C#项目的,用的比较顺手,也习惯了。看其他技术文章有介绍VS Code更轻量,更方便。所以就想来研究如何使用VS Code,看看它是如何构建代码、调试代码、如何运行C#应用程序。本文将详细介绍如何在VS Code中配置.NET开发环境,演示环境为Windows系统。
2025-04-27 17:09:30
1298
原创 C#中async await异步关键字用法和异步的底层原理
异步方法编译过程回顾再唠唠async方法咋被编译成状态机的,状态机又咋根据await拆分方法、驱动异步操作的。await到底在干啥说白了,await根本不是真的“等待”,而是靠状态机和等待器来实现的异步协作。强调一下异步编程的好处,比如响应快、省资源、能扛更多活儿,还有啥场景适合用它。
2025-04-15 15:32:26
487
1
原创 QML中C++类注册和使用的四中方法
是最常用的注册方式之一,适用于需要在QML中创建多个实例的场景。在QML中注册C++类型的方法有多种,每种方法都有其适用的场景。适用于需要创建多个实例的场景,宏提供了一种简洁的注册方式,适合全局访问的单例对象,而则适合直接暴露C++对象给QML。根据实际需求选择合适的方法,可以更好地实现QML和C++的交互,提高开发效率和代码质量。
2025-04-14 09:55:01
502
原创 QML信号槽处理
在QML中,可以使用signal关键字定义自定义信号。自定义信号可以在需要的时候触发,并连接到槽函数进行处理。定义自定义信号触发自定义信号customSignal("这是一个自定义信号")连接自定义信号到槽函数console.log("接收到自定义信号:", message)完整示例Window {width: 640title: "自定义信号示例"Item {id: myItem// 触发自定义信号customSignal("自定义信号被触发")// 连接自定义信号到槽函数。
2025-04-14 09:50:56
857
原创 QML访问javascript方法
可以将复杂的逻辑或数据处理代码分离到单独的JavaScript文件中,提高代码的可维护性和可读性。通过在QML文件中导入这些JavaScript文件,可以将这些文件中的函数和变量在QML文件中直接使用。JavaScript可以连接QML中的信号,并在相应的槽函数中执行JavaScript代码。QML中的JavaScript函数可以直接被调用,反之亦然。在QML中,可以定义JavaScript函数来处理事件,如按钮点击事件。需要清楚,.js文件和.qml文件的语法本质上是一样的,因为它们都使用。
2025-04-14 09:48:09
1122
原创 QML中ListView加载大数据
这时候应该使用C++模型或者自定义的抽象模型,只在需要时加载数据,比如QAbstractItemModel的子类,这样可以在后端动态获取数据,而不是一次性加载所有数据。这也是实际开发中非常常用的实现方式。这个方案通过QML的虚拟化列表特性,结合动态加载策略,实现了在保持60FPS流畅滚动的同时,内存占用恒定(与列表长度无关)。但是本篇为了演示方便,暂不用c++模型的方式,而是自定义一个代理模型,只在需要时生成数据,比如根据索引动态生成项的内容,而不是预先存储所有数据,而是按需生成。
2025-04-11 08:00:00
402
原创 QML字体
在 QML 开发中,FontLoader 是一个非常实用的组件,用于动态加载字体。熟练掌握其使用方法和相关技巧,不仅能丰富界面的视觉效果,还能避免因字体问题引发的版权纠纷。下面将详细介绍 FontLoader 的使用背景、方法以及字体版权处理的相关内容。
2025-04-11 07:45:00
636
原创 QML面试自定义button
通过这个例子,你已经了解了如何使用Rectangle和MouseArea来实现一个简单的按钮组件。你可以根据自己的需求来修改和扩展这个例子,以满足你的需求。
2025-04-11 07:00:00
343
原创 QML中component控件使用
在 QML 中, 是一种用于定义可重用组件的机制。它允许你将一段 QML 代码封装成一个独立的组件,然后在其他地方多次使用。 可以定义在独立的 QML 文件中,也可以嵌入到其他 QML 文件中。这种方式特别适合以下场景: 的使用主要有两种方式:嵌入式 :独立文件 :下面写一个简单的示例能帮助你理解如何在 QML 中使用 !首先,定义一个 ,这个组件可以是一个简单的按钮。
2025-04-10 09:00:00
633
原创 QML颜色
width: 100color: "hsl(210, 50%, 50%)" // 使用 HSL 函数设置矩形背景色背景知识:HSL(Hue, Saturation, Lightness)颜色模型是一种基于人对颜色感知的颜色表示方法。色调(Hue)表示颜色的种类,饱和度(Saturation)表示颜色的纯度,亮度(Lightness)表示颜色的明暗程度。这种模型更符合人类对颜色的理解和调整方式。应用场景:在需要基于色调、饱和度和亮度来定义颜色时,HSL 函数更具直观性和可操作性。
2025-04-09 15:36:31
753
原创 QML程序依赖库dll提取和打包分发
在开发基于QML的应用程序时,编译后的可执行文件(exe)会依赖于一系列的动态链接库(dll)。为了确保程序在不同环境下的正常运行,或者为了对程序进行进一步的分析和优化,提取这些依赖的动态库是非常必要的。通过以上步骤,你可以将QML编写的exe及其依赖的动态库打包成一个专业的安装程序,方便用户进行安装和使用。同时,Inno Setup的灵活性也允许你根据需要进行各种定制化设置。它可以帮助开发者轻松地将应用程序及其依赖文件打包成一个安装包,方便用户进行安装和卸载操作。
2025-04-09 15:34:29
950
原创 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
439
原创 QML面试笔记--UI设计篇05容器控件
它适合需要通过标签明确指示当前页面的场景,比如多页面应用的导航栏。SwipeView 本身是不可见的,通常需要与页面指示器(如 PageIndicator)结合使用,以显示当前页面的位置。在智能设备井喷的时代,QML容器控件如同"数字乐高",通过巧妙的组合艺术,将简单元素转化为功能强大的交互界面。TabBar 是一个可视化的标签栏,通常显示在页面顶部或底部,提供明确的导航指示。主要通过点击标签按钮进行页面切换,适合需要明确的页面导航和选择的场景。适合需要通过标签导航的场景,比如多页面应用的底部导航栏。
2025-04-08 11:42:13
1521
原创 QML面试笔记--UI设计篇03导航控件
优秀的导航设计如同城市的交通路标,让用户无需思考就能抵达目的地。通过合理组合这些QML导航控件,开发者可以打造出媲美原生体验的跨平台应用。当你在代码中写下这些导航逻辑时,不妨想象用户指尖在屏幕上的舞蹈——那正是优秀UX设计的终极追求。
2025-04-08 11:38:07
489
原创 QML面试笔记--UI设计篇02布局控件
以上是 QML 中常用的布局控件,每种控件都有其特定的使用场景和优势。通过合理组合这些控件,可以创建复杂且美观的用户界面。
2025-04-08 11:35:54
384
原创 QML面试笔记--UI设计篇01常用控件分类
| 6+ | 界面元素组织与分组 | 复杂界面分层、滚动区域 | | 5+ | 界面元素排列与自适应 | 响应式布局、多设备适配 | | 8+ | 数据可视化与状态呈现 | 仪表盘、实时监控 |3D集成:Qt Quick 3D模块实现2D/3D混合开发。防抖处理避免频繁触发搜索。
2025-04-08 11:33:36
346
原创 CMake学习--如何在CMake中编译静态库、动态库并在主程序中调用
通过CMake,我们可以方便地编译静态库和动态库,并在主程序中调用。静态库适合代码量不大且需要保证代码安全的场景,动态库适合代码量大且需要共享的场景。在实际项目中,根据需求选择合适的库类型,并合理组织项目结构,可以提高代码的可维护性和可扩展性。
2025-04-02 15:48:39
878
原创 CMake学习--Window下VSCode 中 CMake C++ 代码调试操作方法
通过以上步骤,我们成功地在Windows环境下 VSCode 中配置了 CMake C++ 项目,并实现了代码调试。这种开发方式充分利用了 CMake 的构建能力和 VSCode 的便捷性,为 C++ 开发者提供了一个高效、灵活的开发环境。在实际开发中,可以根据项目需求进一步扩展和优化配置,以满足更复杂的开发场景。
2025-04-02 15:46:14
1270
原创 CMake学习-- install 指令详细说明
使用命令安装库目标。指定静态库文件的安装位置为lib目录。指定头文件的安装位置为include目录。通过CMake的install命令,可以方便地定义安装规则,将构建的文件安装到指定的位置。这对于项目的部署和分发非常重要,因为它确保了软件可以在不同的系统环境中正确运行。在实际项目中,合理使用install命令可以提高项目的可维护性和可扩展性。当你在终端输入make install时,CMake就像一位经验丰富的管家,将编译产物分门别类地安置在系统的各个角落。
2025-04-02 15:35:06
722
原创 【3天快速入门WPF】从小白到新手入门教程
嘿,小伙伴们!如果你已经有一定的C#开发基础,但想快速掌握WPF开发,达到企业级水准,那接下来的这个三天快速入门计划绝对适合你!虽然听起来有点挑战,但别担心,只要跟着这个高强度、结构化的学习计划,你一定能搞定它。首先,我们得搞清楚,WPF的核心知识点到底有哪些。要想达到企业级开发水准,XAML、数据绑定、MVVM、控件使用、命令系统、样式模板这些统统都得拿下。听起来是不是有点多?别急,我们把任务分解到三天里,每天安排合理的内容,保证理论和实践相结合,让你学得扎实又高效。
2025-02-27 16:25:28
545
原创 【3天快速入门WPF】13-MVVM进阶
本篇我们开发一个基于MVVM的登录页面,用来回顾下之前学习的内容登录页面如下:窗体取消了默认的标题栏,调整为带阴影的圆角窗体,左侧放一张登录背景图,右边自绘了一个关闭按钮,文本框和按钮也做了美化。快速来看一下如何实现的。窗口样式调整为None,不允许调整窗口大小,用Border包裹整个窗体实现圆角以及阴影效果,整体分两部分 - 左侧图片、右侧背景图:2. 字体图标去阿里巴巴矢量图标库选好要用的图标,添加入库,然后下载下来添加至项目:主要用上面勾选的两个文件,html文件是下载的图标演示,tff是程序中用
2025-02-27 15:55:12
768
原创 【3天快速入门WPF】12-MVVM
MVVM是的缩写,是一种用于构建用户界面的设计模式,是一种简化用户界面的事件驱动编程方式。MVVM的目标是实现用户界面和业务逻辑之间的彻底分离,以便更好地管理和维护应用程序,并提供更好的可测试性和可扩展性。MVVMModelModel代表应用程序的数据和业务逻辑。它负责存储和管理数据,并且通常不包含任何与用户界面相关的代码。Model 可以是数据实体、数据库访问类、服务类等。ViewView是用户界面的可视化表示,通常由 XAML 文件定义。它负责展示数据给用户,并捕获用户输入。
2025-02-27 10:59:22
832
原创 【3天快速入门WPF】11-附加属性
创建一个静态类,用于定义附加属性。使用方法注册附加属性。提供Get和Set方法来获取和设置附加属性的值。通过以上步骤,我们可以在WPF中轻松实现和使用附加属性。附加属性的主要用途包括为控件添加自定义行为、控制布局信息(如Grid.Row和)以及实现动态样式。
2025-02-27 10:35:39
500
原创 【3天快速入门WPF】10-绑定属性
依赖属性(Dependency Properties)是WPF中的一项关键特性,它具有一些附加的功能和特性,使其在数据绑定、样式应用、动画和属性值继承等方面更加强大和灵活。它被视为一种具有依赖关系的属性,可以在没有明确值的情况下依赖于其他对象或数据源。当使用数据绑定时,依赖属性可以从数据源获取值,并在数据源值发生变化时自动更新。依赖属性的依赖关系和值的改变过程很复杂,尤其在涉及多个依赖属性之间的相互依赖时。
2025-02-26 15:30:48
627
原创 【3天快速入门WPF】9-数据绑定进阶
Binding,出于方便业界一直使用Binding一词的音译,即“绑定”。我理解Binding更注重表达它是一种像桥梁一样的关联关系。WPF中,正是在这段桥梁上我们有机会为往来流通的数据做很多事情。Binding在源与目标之间架起了沟通的桥梁,默认情况下数据既能够通过Binding送达目标,也能够从目标返回源(收集用户对数据的修改)。有时候数据只需要展示给用户、不允许用户修改,这时候可以把Binding模式更改为从源向目标的单向沟通。Binding还支持从目标向源的单向沟通以及只在Binding。
2025-02-18 18:07:45
881
原创 【3天快速入门WPF】6-常用控件【全】
常用属性:: 按钮显示的内容。: 按钮的宽度。: 按钮的高度。常用事件:: 当用户单击按钮时触发的事件。常用属性: 显示的内容。 的宽度。 的高度。: 重复触发事件之间的时间间隔(以毫秒为单位)。`常用事件:: 当用户单击按钮时触发的事件。在这个示例中,当用户点击按钮时,会触发名为 RepeatButton_Click 的事件处理程序。Interval 属性设置了事件重复触发之间的间隔时间(500 毫秒)。注意:RepeatButton 是一个特殊的按钮,当用户按住它时,会不断触发 Click 事件,直到
2025-02-18 13:10:47
1222
HPSocketDemo1.rar
2020-09-23
CefMFCDemo.rar
2020-04-07
OpenCVCam.rar
2020-03-26
CowBoyDemo.rar
2020-03-24
HPSocketDemo1.rar
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人