- 博客(89)
- 收藏
- 关注
原创 使用QAction编辑器添加QAction到ui里
通过 Action Editor,可以完全可视化地管理。,无需手动编写创建和布局代码,大幅提升开发效率!:Qt 会自动连接命名规范的槽函数(无需手动。,无需手动编写代码。文件后,Qt 会自动生成。
2025-04-05 16:59:52
204
原创 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
原创 钻石继承(Diamond Inheritance)问题是什么?如何解决?
钻石继承问题主要出现在多重继承场景中,通过虚继承、显式指定访问路径或避免多重继承等方法可以有效解决。
2025-03-15 10:24:07
369
原创 C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?
虚析构函数的作用是确保在通过基类指针或引用删除派生类对象时,能够正确调用派生类的析构函数,从而避免资源泄漏和未定义行为。如果基类中定义了虚函数,那么基类的析构函数也应该声明为虚的,以支持多态的正确析构。
2025-03-15 00:05:33
368
原创 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
原创 VC++ 中GDI+ 变换(平移、旋转、缩放)的简单应用
图形变换是指对绘制的图形进行平移、旋转、伸缩等操作,由 Graphics 类提供对应的成员函数进行实现。在+中,矩阵变换所涉及的矩阵,由专门的矩阵类 Matrix 来表示,是一个 3x3的矩阵。在工作中遇到了要用变换的问题,于是就记录一下,以备后面复习。
2025-01-19 22:02:44
384
原创 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关注的人