自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用QAction编辑器添加QAction到ui里

通过 Action Editor,可以完全可视化地管理。,无需手动编写创建和布局代码,大幅提升开发效率!:Qt 会自动连接命名规范的槽函数(无需手动。,无需手动编写代码。文件后,Qt 会自动生成。

2025-04-05 16:59:52 204

原创 在QWidget中如何添加QAction

可以通过以下步骤实现。),但也可以直接关联到。

2025-04-05 16:48:35 127

原创 Qt中左侧项目菜单中构建设置功能中的构建步骤是怎么回事

构建步骤(Build Steps)**是控制项目如何编译、链接和生成最终产物的核心配置区域。它允许你自定义编译过程中的各个阶段(如。在 Qt Creator 中,**构建设置(Build Settings)通过合理配置构建步骤,可以显著提升开发效率并避免常见的编译问题。等命令的具体行为)。

2025-04-05 15:29:35 165

原创 在Qt中直接在构建目录下直接运行.exe文件报错问题分析

在学习Qt的过程中遇到过一个问题,直接在Qt构建目录下运行生成的.exe文件时会报错。这和MFC有一定的差别,如果MFC是可以直接运行的。| 如果使用 MSVC 编译 |已放置在正确的位置。否则会出现程序无法启动或报错(如。文件(Windows 平台)时,需要确保以下。| Windows 平台插件 |Qt 提供了 windeployqt。在 Qt 中直接运行构建目录下的。(Windows 平台插件)2.其他可能需要的插件(如。自动部署,避免遗漏依赖项!它会自动复制所有需要的。

2025-04-02 20:21:08 1017

原创 vecto容器的emplace_back函数对比push_back函数

emplace 相比 push_back 的主要优势在于减少了不必要的拷贝或移动操作,从而提高了性能和效率。此外,emplace 的灵活性更高,适用于更广泛的场景,尤其是在处理复杂对象和资源管理类时。然而,push_back 也有其优势,例如代码可读性更高(因为它直接传递对象),在某些简单场景下也完全适用。在实际使用中,可以根据具体需求选择合适的方法。

2025-03-30 15:07:05 421

原创 MFC中CMap类的用法和原理

CMap 是一个模板类,需要指定键类型、键的参数类型、值类型和值的参数类型。例如:下面展示一些内联代码片。// 键为 int,值为 CString// 哈希表大小为 101。

2025-03-30 14:11:38 445

原创 C++11中智能指针的使用(shared_ptr、unique_ptr、weak_ptr)

如果需要对对象进行特殊处理(如释放资源或调用特定函数),可以为。

2025-03-24 23:38:52 805

原创 如何在Win32编程中实现多线程同步?

在Win32编程中,多线程同步可以通过多种机制实现,包括临界区、互斥量、信号量和事件。临界区:适用于同一进程内的线程同步。互斥量:适用于跨进程的线程同步。信号量:适用于控制对多个资源的访问。事件:适用于线程间的通信和同步。通过合理选择和使用这些同步机制,可以确保多线程程序的正确性和稳定性。句柄。

2025-03-22 11:46:59 584

原创 VC++中终止线程的方式

在MFC中,可以使用事件对象(如CEvent)来通知线程终止。线程可以在运行过程中定期检查事件是否被触发,如果是,则安全地退出。

2025-03-22 10:09:41 228

原创 unique_ptr中reset()函数的用法

如果。

2025-03-15 12:15:08 436

原创 钻石继承(Diamond Inheritance)问题是什么?如何解决?

钻石继承问题主要出现在多重继承场景中,通过虚继承、显式指定访问路径或避免多重继承等方法可以有效解决。

2025-03-15 10:24:07 369

原创 C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?

虚析构函数的作用是确保在通过基类指针或引用删除派生类对象时,能够正确调用派生类的析构函数,从而避免资源泄漏和未定义行为。如果基类中定义了虚函数,那么基类的析构函数也应该声明为虚的,以支持多态的正确析构。

2025-03-15 00:05:33 368

原创 C++中通过虚函数实现多态的原理

虚函数是在基类中使用。

2025-03-14 23:47:45 332

原创 C++ 中的RAII(资源获取及初始化)

RAII是C++中一种非常重要的资源管理机制,通过将资源的生命周期与对象的生命周期绑定,能够有效避免资源管理中的错误。它在现代C++编程中被广泛应用,尤其是在智能指针、文件操作和线程同步等领域。合理使用RAII可以提高代码的安全性和可维护性。

2025-03-10 23:48:50 394

原创 Qt 元对象系统

Qt元对象系统(Meta-Object System)是Qt框架的核心特性之一,它为C++语言提供了运行时反射、信号与槽机制、动态属性系统等功能。

2025-03-09 21:06:46 912

原创 C++11使用mutex和condition_variable实现线程同步

C++中A、B、C三个线程模拟购买100张车票,A输出99,B输出98,C输出97,然后又循环A输出96,B95,C94,直到0,使用线程同步,如何实现?这是一种按顺序执行线程的问题,应该实现?

2025-03-09 19:47:10 270

原创 C++11中的Condition_variable

在C++11中,条件变量()是线程同步机制之一,用于在多线程环境中实现线程间的通信和协调。它允许一个或多个线程在某个条件尚未满足时等待,直到其他线程通知条件已经满足。条件变量通常与互斥锁(std::mutex)一起使用,以确保线程安全。

2025-03-09 19:45:41 307

原创 C++11中atomic

是C++中实现线程安全和原子操作的重要工具。它不仅能够保证操作的原子性,还可以通过内存序控制解决复杂的多线程同步问题。在设计多线程程序时,合理使用可以提高代码的效率和可维护性。

2025-03-05 23:49:08 392

原创 MFC中CMutex类和CSingleLock类,配合使用疑惑

在MFC中,虽然CMutex类本身可以实现线程同步,但通常会与CSingleLock类一起使用,主要原因在于CSingleLock提供了更灵活和安全的同步机制,以下是具体原因:

2025-03-02 16:05:48 330

原创 Qt中的事件模型

在Qt 中事件是通过QEvent和其子类来表示的,QEvent是一个抽象基类,定义了事件的基本结构,而具体的事件类型(如鼠标事件、键盘事件、定时器事件等),则通过继承QEvent来实现。例如:QMouseEvent:鼠标事件。QKeyEvent:键盘事件。QResizeEvent:表示窗口大小改变事件。QTimerEvent:表示定时器事件。

2025-03-02 15:37:23 943

原创 Qt 中signals和slots、Q_SIGNAL和Q_LOT、Q_SIGNALS和Q_SLOTS的区别和使用

信号和槽函数需要在类的声明中明确声明。信号需要使用signals关键字,而槽函数可以使用slots关键字(虽然在现代Qt中,槽函数也可以直接作为普通成员函数声明,但使用slots关键字更清晰)。

2025-03-01 18:35:18 1196

原创 Qt中如果槽函数运行时间久,避免阻塞主线程的做法

Q_OBJECTpublic:signals:// 模拟耗时任务i < 10;++i)// 模拟耗时操作。

2025-03-01 18:16:04 1172

原创 Qt中的核心机制--信号与槽

在类中可以自己定义信号,信号就是在类定义里声明一个函数,但是这个函数无需实现,只需发射(emit)。例如:// 发射信号。

2025-03-01 16:20:02 919

原创 C++中tuple的用法

std::tuple是 C++ 中一个非常灵活的工具,适用于存储一组不同类型的值。它支持多种操作,包括访问、修改、解包、比较和与函数结合使用。通过std::tuple,可以更方便地处理复杂的数据结构,尤其是在函数返回多个值或需要传递一组不同类型参数时。说明:以上文章由Kimi生成,tuple在C++11中引入,具体可以看下《C++ Primer》一书。

2025-02-24 23:21:45 374

原创 C# WinForm 中的事件驱动模型

WinForm 的事件驱动模型是基于事件和事件处理程序的编程范式。通过将事件处理程序绑定到控件的事件上,应用程序可以响应用户的操作和其他系统事件。事件委托是实现事件机制的核心,而事件的多播特性使得多个处理程序可以绑定到同一个事件上。WinForm 应用程序通过事件和事件处理程序来响应用户的交互操作(如点击按钮、输入文本等),从而实现动态交互。这些事件会触发相应的事件处理程序(即事件处理器),从而执行特定的代码逻辑。C# 的事件支持多播委托,即可以将多个事件处理程序绑定到同一个事件上。操作符将事件处理程序(

2025-02-23 15:00:28 1141

原创 Qt 中的线程池QRunnable和QThreadPool

QRunnable是 Qt 框架中用于表示可运行任务的类,它是线程池()中任务的接口。通过继承QRunnable并重写其run()方法,可以创建一个可以在单独线程中执行的任务。QRunnable是 Qt 实现线程池任务调度的核心机制之一。1. QRunnable 的作用QRunnable是一个抽象类,用于表示一个可以被线程执行的任务。它的主要目的是将任务封装为一个对象,然后通过线程池()或其他线程管理机制来执行这些任务。QRunnable的设计使得任务的创建和执行解耦,从而提高了代码的可维护性和可扩展性。

2025-02-23 11:31:43 862

原创 WinForm使用WebView2开发现代应用

在微信公众号中看到可以使用WinForm来构建Web应用程序,于是尝试自己制作一个简单的应用。在WinForm中主要是使用WebView2控件来构建的。如下图:笔者项目已经安装完了,直接在工具箱中使用即可。上面是一个TextBox控件,和一个按钮;TetxBox控件填写网址,点击按钮访问相应的网址。第三步:编写代码。如下:下面是输入百度网址后的运行效果:参考文献:1.WinForms 应用中的 WebView2 入门好了,在WinForm中简单使用WebView2控件的介绍就到这里了。关于WebView2

2025-02-16 23:03:26 220

原创 C# Winform 使用委托实现C++中回调函数的功能

如果是WinForms应用程序,推荐使用Invoke或。如果是WPF应用程序,推荐使用。如果需要更通用的解决方案,可以使用。如果是异步任务,可以使用Task和。好了,关于在C#WinForm中使用委托实现回调函数功能的介绍就到这里了。Gitee。

2025-02-10 23:39:48 866

转载 Qt多线程编程

/ 子线程执行工作// 主线程中调用的方法signals:private:// 任务进度。

2025-01-23 12:53:58 21

原创 VC++ 中GDI+ 变换(平移、旋转、缩放)的简单应用

图形变换是指对绘制的图形进行平移、旋转、伸缩等操作,由 Graphics 类提供对应的成员函数进行实现。在+中,矩阵变换所涉及的矩阵,由专门的矩阵类 Matrix 来表示,是一个 3x3的矩阵。在工作中遇到了要用变换的问题,于是就记录一下,以备后面复习。

2025-01-19 22:02:44 384

原创 Qt的核心机制概述

几篇不错的文章介绍:1.2.3.

2025-01-15 23:20:40 1106

原创 Qt中.pro文件中可以填加的宏和其他的信息

自定义变量:可以定义自己的变量,用于存储路径、文件列表等信息。proDEFINES:定义预处理器宏。pro.pro文件是Qt项目构建过程中的核心配置文件,通过合理使用各种宏和信息,可以灵活地配置项目的构建过程,确保项目的顺利编译和运行。

2025-01-13 23:06:32 1145

原创 Qt的.pro文件中宏的作用

DESTDIR宏是Qt中一个非常有用的宏,它允许开发者灵活地控制生成文件的输出目录。通过正确设置DESTDIR的值,可以确保生成的文件被放置在期望的位置,从而简化项目的构建和部署过程。CONFIG宏在Qt项目中扮演着关键角色,通过合理设置CONFIG宏,可以灵活地控制项目的编译、链接和运行时行为,满足不同开发和部署需求。SOURCES宏是Qt项目中非常重要的一个宏,通过合理使用SOURCES宏,可以精确控制项目的编译过程,确保只有必要的文件被编译,从而提高编译效率和项目的可管理性。HEADERS。

2025-01-13 23:05:11 1128

原创 Qt绘图(2)

QPainter 有关坐标变换操作的函数常用的坐标变换是平移、旋转、和缩放,使用世界坐标变换矩阵也可以实现这些功能,但是需要单独定义一个QTransform类的变量。1.坐标平移坐标平移函数是translate()函数,其中一种参数原型是表示将坐标系统水平方向平移dx个单位,垂直方向平移dy个单位,在默认的坐标系统中,单位是像素。2.坐标旋转坐标旋转函数是rotate()函数,其中一种参数原型是他是将坐标系统绕坐标原点顺时针旋转angle角度,单位是度。

2025-01-12 18:04:06 1018

原创 Qt 绘图

Qt的二维图形绘制基本上是使用QPainter在绘图设备上绘图,绘图设备包括QWidget、QPixmap等,通过绘制一些基本的点,线、圆等基本图形,得到的图形是不可交互操作的图形。1.QPainter与QPaintDeviceQt的绘图系统基于QPainter、QPaintDevice、QPaintEngine类。QPainter 是专门用来绘图操作的类,QPaintDevice是使QPainter可以进行绘图的二维界面。QPaintEngine给QPainter提供在不同绘图设备上的接口。

2025-01-05 17:24:54 1146

转载 C#异步编程与多线程

异步编程模式是一种编程接口设计,主要用于处理并发流程需求。是C#中实现异步编程的主要方式之一。这种模式允许开发者编写非阻塞代码,提高程序的响应性和效率。1.2、async/await使用示例Console.WriteLine("........按任意键退出");Console.WriteLine("异步开始");Console.WriteLine("结果是{0}",r+x);return 100;程序运行结果:通过上述代码可以看到,async关键字修饰的方法为异步方法,而。

2024-12-29 18:38:34 311

原创 C# 简单使用NModbus

在工业自动化和中,Modbus协议是一种广泛使用的通信协议。它是一种基于主从结构的串行通信协议,简单、可靠且易于实现。在C#中,可以使用NModbus4库来执行Modbus通信。本文将详细介绍如何使用NModbus4库在C#中执行Modbus读操作。

2024-12-28 20:22:36 2848

原创 设计模式中单例模式中懒汉模式的问题

懒汉模式在多线程环境下需要特别小心,常见的问题包括线程安全问题、内存泄漏、性能开销等。为了确保线程安全并避免性能问题,推荐使用或 C++11 中的静态局部变量来实现单例模式。通过这些改进,可以大幅度提升懒汉模式的效率和安全性。

2024-12-22 17:54:14 811

原创 VC++ 自定义控件---信号灯

在项目中需要用到信后,于是就自己定义了一个控件,这个控件继承自CStatic.好了,介绍就到这里了,后续如果有需要还可以扩展。

2024-12-22 00:12:02 130

原创 Qt中的异步相关类

今天在学习别人的项目时,看到别人包含了QFuture类,我没有见过,于是记录一下。直接在AI助手中搜索QFuture,得到的时Qt中异步相关的类。于是直接查询一下Qt异步中相关的类。在Qt中,异步编程是一个重要的概念,它允许开发者在不阻塞主线程的情况下执行耗时的任务。

2024-12-19 23:55:00 919

空空如也

空空如也

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

TA关注的人

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