摘要: WPF上位机入门教程 顾名思义,是一个WPF上位机入门的教程,包含WPF基本控件使用方法、控件库、MVVM框架、IOC框架、日志、XML、串口、Modbus、PLC、SocketServer、SQLite、曲线绘制、文档导入导出等内容。 控件库 HandyControl MVVM框架 Prism.W 阅读全文
posted @ 2025-10-12 12:30 xhubobo 阅读(171) 评论(0) 推荐(0)
摘要: 需求:需要将2944×1080的视频裁剪出左侧1920×1080的部分。 要使用ffmpeg将2944×1080的视频裁剪出左侧1920×1080的部分,你可以使用ffmpeg的裁剪滤镜(crop)。 基本命令格式如下: ffmpeg -i input.mp4 -vf "crop=1920:1080 阅读全文
posted @ 2025-09-04 09:46 xhubobo 阅读(107) 评论(0) 推荐(0)
摘要: Lambda 表达式是 C++11 引入的强大特性,它允许我们定义匿名函数对象。在 lambda 表达式中,参数的引用方式与普通函数类似,但有一些额外的捕获机制需要注意。 1. Lambda 表达式的基本语法 [capture](parameters) -> return_type { // 函数体 阅读全文
posted @ 2025-08-28 09:07 xhubobo 阅读(49) 评论(0) 推荐(0)
摘要: Qt实现线程封装 本文使用 QObject::moveToThread 方式实现Qt中的线程封装,适用于频繁与主线程通信的场景。 1 线程封装 1.1 工作者对象头文件(AsyncWorker.h) #ifndef ASYNCWORKER_H #define ASYNCWORKER_H #inclu 阅读全文
posted @ 2025-07-14 18:11 xhubobo 阅读(25) 评论(0) 推荐(0)
摘要: Qt实现简单事件总线 事件总线(Event Bus)是一种解耦组件通信的设计模式,它允许不同对象之间通过事件进行通信而无需直接引用对方。 事件通常是自定义类型,需要在main.cpp中注册自定义元类型 //注册自定义元类型 qRegisterMetaType<KeyPressedEvent>("Ke 阅读全文
posted @ 2025-07-09 13:13 xhubobo 阅读(86) 评论(0) 推荐(0)
摘要: 本文实现对单例服务的管理。 服务容器类实现功能: 注册单例类型(默认构造函数); 注册单例类型(接口及实现类,默认构造函数); 注册单例类型(带自定义工厂函数); 获取单例实例。 这些方法使用std::mutex加锁。 服务管理类实现功能: 私有方法:注册单例类型、初始化服务、反初始化服务, 共有方 阅读全文
posted @ 2025-07-07 10:45 xhubobo 阅读(7) 评论(0) 推荐(0)
摘要: 在Qt项目中直接包含spdlog源码是最简单且跨平台的集成方式。以下是详细的实现步骤: 1. 下载spdlog源码 通过spdlog的GitHub仓库下载源码:v1.15.3.zip。 将v1.15.3.zip解压缩,拷贝include、src文件夹到third_party/spdlog,Qt项目结 阅读全文
posted @ 2025-07-05 21:45 xhubobo 阅读(239) 评论(0) 推荐(0)
摘要: 1. 下载sdk vlc sdk下载地址为http://download.videolan.org/pub/videolan/vlc/,以3.0.20为例,下载文件为vlc-3.0.20-win32.7z。 需要注意的是,需要下载.7z文件,.zip文件中是没有sdk文件夹的。 将vlc-3.0.2 阅读全文
posted @ 2025-07-04 09:46 xhubobo 阅读(343) 评论(0) 推荐(0)
摘要: 1、在*.pro文件中添加多媒体模块 QT += multimedia multimediawidgets 2、使用QCamera`和`QCameraViewfinder实现捕捉和显示摄像头图像 2.1 头文件mainwindow.h #ifndef MAINWINDOW_H #define MAI 阅读全文
posted @ 2025-02-25 17:35 xhubobo 阅读(222) 评论(0) 推荐(0)
摘要: 在 WPF 中,DataGrid 默认情况下行高是固定的。如果要实现 DataGrid 的行高自适应(根据行中内容动态调整行高),可以通过 LayoutUpdated 事件实现。 <Grid Margin="15,10"> <Grid.RowDefinitions> <RowDefinition H 阅读全文
posted @ 2025-02-19 11:41 xhubobo 阅读(445) 评论(0) 推荐(1)
摘要: 在 .NET 6 和更高版本中,C# 引入了一个新功能叫作 "global using directives",它允许我们在一个地方定义全局可用的 using 指令,而不必在每个文件中重复。然而,有时候我们可能希望在某些文件中禁用特定的全局 using 指令。 我在基于 .Net 8 的 WPF 项 阅读全文
posted @ 2025-02-19 11:20 xhubobo 阅读(71) 评论(0) 推荐(0)
摘要: 1、问题场景 WPF使用Prism.WPF、Prism.Unity组件之后,使用IOC方法创建主窗口(MainWindow): protected override Window CreateShell() { return Container.Resolve<MainWindow>(); } 在主 阅读全文
posted @ 2025-01-21 08:59 xhubobo 阅读(338) 评论(0) 推荐(1)
摘要: 本文以BeJson(https://www.bejson.com/)中的JSON在线编辑器示例内容作为学习Qt中构建、解析Json的参考方法。 1、Json文本 { "name": "BeJson", "url": "http://www.bejson.com", "page": 88, "isNo 阅读全文
posted @ 2024-11-11 23:10 xhubobo 阅读(73) 评论(0) 推荐(0)
摘要: void testReadWriteFile() { //当前程序所在文件夹 QString dirPath = QCoreApplication::applicationDirPath(); QString path = QDir::cleanPath(dirPath + QDir::separa 阅读全文
posted @ 2024-11-11 22:06 xhubobo 阅读(42) 评论(0) 推荐(0)
摘要: Qt中使用QNetworkAccessManager类来实现Http相关请求,本文介绍Http Get请求的简单实用方法。 下面是Qt中进行Http请求的简单步骤: 定义QNetworkAccessManager指针及槽函数 创建QNetworkAccessManager对象并关联槽函数 在类的析构 阅读全文
posted @ 2024-11-07 23:06 xhubobo 阅读(352) 评论(0) 推荐(0)