自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt线程使用(六)QThreadPool + QRunnable

本文介绍了Qt中使用QThreadPool和QRunnable实现线程池的方法。通过示例代码展示了如何创建继承QRunnable的任务类,并提交到线程池执行。文章详细说明了线程池的自动管理特性、最大线程数控制以及任务通信的两种方案(多重继承或回调机制)。最后对比了Qt中四种线程使用方式的适用场景,建议根据任务类型选择合适方案,强调后台线程禁止直接访问GUI对象,必须通过安全方式与主线程通信。

2025-12-07 16:05:32 793

原创 Qt线程使用(五)QtConcurrent模块

本文介绍了Qt框架中两种并发编程方式:传统QThread与QtConcurrent模块的对比。重点讲解了QtConcurrent::run()和QtConcurrent::mapped()两种实现方式。run()适用于简单异步任务,mapped()适合批量并行处理。文章通过具体代码示例演示了两种方法的使用场景和优势,包括避免界面阻塞、自动线程管理等特性。相比于传统QThread方式,QtConcurrent提供了更高层次的抽象,简化了并发编程复杂度,特别适合短期任务和批量处理场景。

2025-12-07 15:20:06 1008

原创 Qt线程使用(四)信号槽中的传递参数机制

在信号槽的使用中,还有一个问题需要特别注意,那就是我们传递的参数类型。会不会自动拷贝、能否使用指针或引用、智能指针是否支持、自定义结构体需要如何注册,这些都是需要考虑的问题。

2025-12-03 16:17:36 937

原创 Qt线程使用(三)跨线程信号槽及第五位参数

本文介绍了Qt中跨线程数据传递的信号槽机制实现方法。首先展示了基本的信号槽跨线程通信示例,通过WorkerClass发送时间信号到WorkerManager接收。然后重点分析了信号槽connect函数的第五个参数ConnectionType的不同模式:AutoConnection、DirectConnection和QueuedConnection,详细解释了它们的适用场景。特别探讨了跨线程使用DirectConnection的同步通信场景,及同一线程中使用QueuedConnection实现异步处理的案例。

2025-12-02 12:26:42 623

原创 Qt线程使用(二)moveToThread

本文介绍了Qt中moveToThread实现多线程的方法,这是Qt官方推荐的线程使用方式。通过将业务类WorkerClass继承QObject并移动到子线程中执行,同时利用信号槽机制实现线程启动、任务执行和安全退出。关键点包括:1) 业务类与线程解耦;2) 通过信号槽触发线程任务和资源清理;3) 使用finished信号确保线程安全退出。相比直接继承QThread,这种方式更符合Qt的事件驱动模型,能更好地管理线程生命周期和资源释放。

2025-12-01 17:11:37 1038

原创 Qt线程使用(一)直接继承QThread类

本文介绍了在Qt中使用线程的四种方案,重点讲解了直接继承QThread的实现方式。通过WorkerThread类示例展示了如何重载run()函数执行线程任务,使用原子变量控制线程启停,并正确处理资源析构。文章指出直接继承QThread虽然简单,但存在业务代码与线程实现高度耦合的问题,不利于代码复用。后续将介绍更优的moveToThread等方法来实现业务与线程的分离。该方案适合基础场景,但面对复杂需求时需要更灵活的设计模式。

2025-11-30 23:34:56 919

原创 Qt调试之Dump文件调试

本文介绍了在Qt开发中使用Dump文件进行调试的方法。通过链接Windows SDK中的dbghelp.lib库,可以在程序崩溃时自动生成Dump文件。文章详细说明了在CMake和qmake项目中的配置方法,并提供了一个MiniDumper类实现自动捕获崩溃并生成Dump文件的功能。该方法适用于MSVC编译环境,能够帮助开发者事后分析程序崩溃原因,是除GDB调试外的另一种有效调试手段。

2025-11-27 16:51:05 572

原创 QML学习笔记(五十六)Model-View:ListView的页眉、页脚、高亮和分组

本文介绍了如何在Qt Quick的ListView中实现页眉页脚和高亮效果。页眉页脚通过header和footer属性添加自定义组件实现,可以独立于数据模型显示固定内容。高亮效果则通过highlight属性定义选中项样式,需配合currentIndex属性控制选中状态,并通过z轴排序和透明度设置实现视觉叠加。文章还详细说明了SpringAnimation动画参数的作用,帮助开发者调整高亮切换时的弹性效果。这些功能丰富了ListView的交互体验和视觉效果,为数据展示提供了更多设计可能性。

2025-11-19 00:48:11 596

原创 QML学习笔记(五十五)Model-View:ListView和ListModel

本文介绍了QML中ListView和ListModel的使用方法。ListView用于展示列表数据,需要绑定一个模型(ListModel)和一个委托(delegate)。ListModel包含多个ListElement,每个元素存储键值对数据。委托(如Rectangle组件)决定了单个数据的显示方式,并能自动关联模型数据。文章通过代码示例展示了基本实现,并演示了两种定义委托的方式:使用Component或直接在ListView中定义。最后还展示了如何为列表项添加鼠标点击功能。

2025-11-12 02:20:41 651

原创 QML学习笔记(五十五)Model-View:初步了解

本文简要介绍了Qt中的Model-View机制及其在QML中的应用。Model负责封装数据,View负责显示数据(如ListView、GridView等),Delegate则处理单个数据单元的呈现方式。这种设计模式实现了数据与展示的分离,提高了代码的复用性和灵活性。作者计划在QT6环境中通过实际项目示例深入掌握这一机制,重点关注ListView和TableView等组件的使用。文章强调Model-View是通用的设计模式而非QML独有,为后续学习奠定了基础。

2025-11-12 01:29:15 933

原创 QML学习笔记(五十四)QML与C++交互:数据转换——QVariantList与QVariantMap

本文介绍了Qt框架中QVariantList与QVariantMap在C++与QML之间的数据转换。通过CppClass1类展示了如何在C++端处理QVariantList和QVariantMap数据,包括从QML接收数据、向QML发送混合类型数据,以及C++直接调用QML函数等功能。核心要点包括:1)使用QVariant存储多种数据类型;2)通过Q_INVOKABLE标记C++方法供QML调用;3)利用QMetaObject::invokeMethod实现C++调用QML函数。示例代码清晰展示了双向数据传

2025-11-08 21:29:52 870

原创 QML学习笔记(五十三)QML与C++交互:数据转换——序列类型与 JavaScript 数组的转换

本文展示了C++与QML之间数组/序列类型的自动转换方法。通过QVetor<QString>和JavaScript数组的互操作示例,演示了如何:1) 将QML数组传递给C++处理;2) 从C++获取字符串数组到QML中使用。实际代码证明Qt框架能自动完成这种类型转换,无需额外处理。这种数据交互方式在前端展示(C++→QML)和后端数据管理(QML→C++)的场景中非常实用。

2025-11-06 17:02:54 283 1

原创 QML学习笔记(五十二)QML与C++交互:数据转换——时间和日期

本文介绍了QML与C++交互中时间和日期数据的传递方法。在C++端使用QDateTime和QTime类,QML端使用Date类,两者可互相转换调用。通过信号槽机制实现数据传递,并展示了QML中日期时间的处理方法。同时演示了字符串参数替换功能,类似C++的QString.arg()方法。最后指出时间传递时需注意数据类型差异可能导致的显示问题。这些方法在开发中具有实用价值。

2025-11-06 15:13:37 313

原创 QML学习笔记(五十一)QML与C++交互:数据转换——基本数据类型

摘要:本文介绍了QML与C++交互时的数据类型转换问题。通过定义C++类CppClass并注册为可实例化QML组件,演示了不同类型数据在两者间的传递方式。文章展示了基本类型(int、double、bool)、字符串、颜色、字体等数据的传输示例,以及如何在QML中处理接收到的C++数据。重点说明了数据类型转换的注意事项,帮助开发者避免跨语言交互时的类型错误。

2025-11-05 17:18:24 223

原创 QML学习笔记(五十)QML与C++交互:QML中单例C++对象

本文介绍了在QML中使用C++单例模式的方法。通过qmlRegisterSingletonType函数注册单例类,实现在QML中直接调用C++单例对象的功能。文章详细展示了单例类的实现代码、注册过程以及QML调用方式,并对比了Qt5和Qt6版本的不同处理方案。同时指出在Qt6中可以使用QML_SINGLETON和QML_ELEMENT宏简化注册流程,为QML与C++混合开发提供了实用的技术方案。

2025-11-01 17:01:27 379

原创 QML学习笔记(四十九)QML与C++交互:QML中可实例化C++对象

摘要: 本文介绍了在QML中直接实例化C++对象的方法。通过qmlRegisterType函数注册C++类(如Movie类)到QML引擎,可以在QML中创建和管理该对象实例。相比传统方式(C++端创建实例后暴露给QML),这种方法更适合与QML强相关的业务对象,由QML控制其生命周期。文中详细演示了从C++类定义、属性注册到QML端创建和使用的完整流程,并对比了两种方式的适用场景:上下文属性适合全局单例,而QML实例化适合有状态的小部件和临时对象。最后说明Qt内置类型(如Camera)也是通过相同机制实现的

2025-10-31 14:52:49 644

原创 QML学习笔记(四十八)QML与C++交互:上下文对象

本文介绍了Qt中上下文对象(QQmlContext::setContextObject)的使用方法。通过示例代码展示了如何将一个C++类对象整体暴露给QML端,使其属性(Q_PROPERTY)可以直接在QML中被引用。相比上下文属性暴露方式,上下文对象的优点是代码简洁,但存在命名冲突风险且不能暴露多个同类对象。作者认为上下文属性暴露方式更加清晰可靠,推荐优先使用。文章还提到对于单例模式工具类,可以采用qmlRegisterSingletonInstance注册方式,这将在后续学习中探讨。

2025-10-30 14:53:42 469

原创 QML学习笔记(四十七)QML与C++交互:Q_PROPERTY宏映射

本文介绍了如何在Qt框架中使用Q_PROPERTY宏将C++类的成员变量映射为QML属性。通过Q_PROPERTY声明,可以定义属性的读写方法和变更信号,使QML端能够像使用普通属性一样访问和绑定这些变量。文章以Counter和Movie类为例,展示了如何实现属性绑定,并强调在修改成员变量时需通过setter方法触发变更信号,确保QML端能正确响应变化。最后通过一个完整的Movie类实例,演示了QML中如何监听和修改这些属性,实现C++与QML的双向数据绑定。

2025-10-22 20:45:11 618

原创 QML学习笔记(四十六)QML与C++交互:信号槽的双向实现

本文介绍了如何在QML和C++之间通过信号槽机制实现双向通信。在C++端创建信号发送类并暴露给QML上下文后,QML可以直接调用C++槽函数或通过Connections接收C++信号;反之,C++端也能连接QML组件发出的信号。这种机制降低了界面和业务逻辑的耦合性,只需获取对方对象即可建立通信,无需关心具体实现细节。通过定时器示例和按钮交互演示了两种方向的信号传递,展示了Qt框架在混合编程中的便利性。

2025-10-21 17:29:08 489

原创 QML学习笔记(四十五)QML与C++交互:对QML对象设置objectName

本文介绍了C++端如何通过QML组件的objectName属性实现双向交互。首先在QML中为组件设置objectName属性,然后在C++端通过findChild方法查找对应的QObject对象。找到对象后,可以使用property接口读取或修改组件属性值,还能通过invokeMethod调用QML组件中声明的函数或信号。这种方法打通了C++与QML之间的双向通信渠道,使C++端具备主动获取和操作QML组件的能力。

2025-10-21 16:30:50 302

原创 QML学习笔记(四十四)QML与C++交互:上下文属性暴露

本文介绍了QML与C++交互的方法,重点讲解了通过setContextProperty将C++对象暴露给QML的机制。在C++端,通过QQuickWidget加载QML界面,并将登录类实例通过上下文属性"loginHandler"暴露给QML。QML端可以直接调用C++对象的公共方法(需加Q_INVOKABLE宏)和槽函数,实现了从QML到C++的单向调用。文中通过一个登录窗口案例演示了用户名和密码从QML传递到C++端处理的完整流程,并展示了返回值传递的功能。该方法实现了UI层与业务逻

2025-10-18 16:28:02 825

原创 QML学习笔记(四十三)QML的MessageDialog

本文介绍了QML中的MessageDialog组件及其使用方法。作为Qt6中的消息弹窗组件,MessageDialog可提供简单提示或选择功能,支持多种模式选择。文章通过代码示例展示了如何创建询问和警告对话框,并详细说明了按钮配置、信号处理等特性。同时对比了QML MessageDialog与QWidget QMessageBox的差异,包括模块依赖、外观表现、按钮文字、图标类型等方面的区别。最后指出,虽然默认组件能满足基本需求,但如需高度自定义样式,建议自行实现弹窗组件以获得更好的灵活性。

2025-10-17 21:09:21 438

原创 QML学习笔记(四十二)QML的ColorDialog和FontDialog

本文介绍了QtQuick中颜色选择框和字体选择框的简单使用方法。通过代码示例演示了如何创建颜色矩形和文本标签,并分别绑定ColorDialog和FontDialog来实现交互式修改。这两种对话框虽然样式受限于系统原生风格,但使用方便且跨平台兼容。文章指出在实际开发中通常直接采用系统弹窗,并提醒需要注意界面翻译问题,建议使用qm翻译文件来处理对话框中的英文文本。整体展示了QtQuick中常用对话框的快速实现方式。

2025-10-17 16:12:30 319

原创 QML学习笔记(四十一)QML的FileDialog和FolderDialog

本文介绍了如何在QtQuick中使用文件选择弹窗和目录选择弹窗。由于不同Qt版本模块支持差异,作者通过别名方式分别引用了QtQuick.Dialogs和Qt.labs.platform模块。文章提供了完整的代码示例,展示如何创建两个按钮分别触发文件和目录选择对话框,并将用户选择结果显示在文本框中。虽然这些原生弹窗样式较为简单,但掌握其使用方法对提升界面交互性很有必要。

2025-10-17 15:52:32 333

原创 QML学习笔记(四十)QML的ApplicationWindow和StackView

本文介绍了QtQuick.Controls 2中的两个核心组件:ApplicationWindow和StackView。ApplicationWindow是一个自带标题栏、菜单栏等UI元素的顶层窗口,适合快速开发导航功能。StackView则是QML的页面导航栈,支持push/pop操作、动画切换和生命周期管理,相当于QWidget中QStackedWidget的增强版。文章还提供了两者的功能对比表,并通过一个测试例子展示了如何在实际项目中结合使用这两个组件,实现带有菜单栏、工具栏和多页面切换的应用程序界面

2025-10-16 22:02:33 915

原创 QML学习笔记(三十九)QML的Label

本文对比了QML中的Label、Text与Qt Widgets中的QLabel组件功能差异。Label作为主题文字控件支持自动换行、超链接和部分HTML,适合表单标签;Text是基础文本元素,适合轻量场景;QLabel作为多功能组件支持完整HTML、图片显示和动画,但需搭配Qt Widgets使用。核心区别在于:Label用于主题化文本,Text用于简单文本渲染,而QLabel作为"万能贴片"支持更丰富的图文混排功能。在QML中如需显示图片需配合Image组件使用。

2025-10-15 16:49:22 283

原创 QML学习笔记(三十八)QML的TextField和TextArea

本文介绍了QML中的文本输入控件TextField和TextArea的使用方法。TextField适用于单行文本输入,支持密码模式和占位文本;TextArea适合多行文本输入,具有自动换行等功能。文章通过登录窗口和文字输入框示例展示了两种控件的实际应用,并与基础组件TextInput、TextEdit进行了对比,指出Qt Quick Controls组件在样式支持上的优势。最后提到这些控件与QWidget中QLineEdit、QTextEdit的功能对应关系,帮助开发者根据场景选择合适的文本输入组件。

2025-10-15 16:29:14 641

原创 QML学习笔记(三十七)QML的Slider

本文介绍了Qt Quick中Slider控件的使用方法。首先展示了基础代码实现,包含横向和纵向滑块,通过from、to、value和stepSize属性控制取值范围和步进值。其次提供了自定义样式示例,详细讲解了背景滑槽、进度区域和圆形滑块的样式实现方法,包括锚点设置、位置计算和交互效果。文章指出,虽然QML样式实现比QSS复杂,但能获得更精确的控件表现效果。Slider控件是实现音量控制、播放进度等交互功能的重要组件。

2025-10-14 16:25:50 189

原创 QML学习笔记(三十六)QML的ComboBox

本文介绍了QML中的ProgressBar进度条控件,通过实例演示了其基本用法和特性。文章首先解析了ProgressBar的文档说明,包括确定和不确定模式的区别。随后通过两个代码示例展示了进度条的实际应用:一是通过按钮点击修改进度值,二是使用Dial旋钮动态控制进度。文中还讨论了进度百分比文字的显示问题,指出QML原生未提供该功能,建议配合Text组件实现。最后总结了进度条的被动显示特性,并预告下节将介绍主动控制的拖动条控件。全文简明扼要地讲解了ProgressBar的核心功能和使用场景。

2025-10-14 15:36:21 278

原创 QML学习笔记(三十四)QML的GroupBox、RadioButton

本文介绍了QML中GroupBox和RadioButton的用法。GroupBox用于将相关控件分组显示,需要手动设置内部布局,可配合CheckBox或RadioButton使用。RadioButton具有圆形选择样式,同一父项下的多个RadioButton默认互斥,无需额外设置。文章通过示例展示了如何将GroupBox与RadioButton结合使用,并总结了不同场景下的选择建议:多选/开关用CheckBox,单选/互斥用RadioButton或ButtonGroup,GroupBox则作为容器使用。

2025-10-13 19:22:10 1236

原创 QML学习笔记(三十五)QML的ComboBox

本文介绍了QML中ComboBox控件的基本用法和特性。ComboBox是下拉选择框,结合了单行输入框和下拉列表的功能,占用界面空间小。文章详细讲解了两种状态(不可编辑态和可编辑态)的实现方式,并通过代码示例演示了如何添加选项、获取当前文本、动态切换显示属性等操作。重点分析了model数据模型的使用,包括数组、ListModel等不同形式,以及如何通过textRole切换选项显示属性。此外,还介绍了currentTextChanged信号处理和动态添加选项的方法,展示了ComboBox在QML中的灵活应用。

2025-10-13 01:34:27 827

原创 QML学习笔记(三十三)QML的CheckBox

本文介绍了Qt框架中的CheckBox控件及其用法。主要内容包括:1. CheckBox的基本功能,支持两态和三态切换;2. 简单实现方法,通过checked属性设置初始状态;3. 使用ButtonGroup实现多选、互斥等复杂逻辑,详细说明了父子复选框联动机制;4. CheckBox的信号处理,特别是三态状态的判断方法;5. 自定义样式示例,展示如何修改复选框外观。文章通过代码示例和效果图,直观地演示了CheckBox控件的各种应用场景和配置方法。

2025-10-12 17:09:54 977

原创 QML学习笔记(三十二)QML的Button

本文介绍了QtQuick中的Button控件,它是用户界面中最基础且重要的组件。文章首先讲解了Button的基本功能和信号机制,然后通过代码示例演示了如何创建响应点击事件的按钮。接着探讨了Button的样式定制方法,包括全局样式设置和个性化背景设置,提供了图片背景和颜色渐变两种实现方式。最后指出,虽然QML提供了灵活的样式定制能力,但相比QWidget样式表略显复杂。Button作为界面开发的基础组件,是掌握QML的关键一步。

2025-10-11 16:01:32 318

原创 QML学习笔记(三十一)QML的Flow定位器

本文介绍了QML中的Flow流式布局组件。Flow布局能根据组件数量、尺寸和父容器大小自动调整组件排列,类似网页中的流式布局。通过代码示例展示了9个彩色方块的自动排列效果,当窗口尺寸变化时组件会自动换行。文章还演示了通过flow和layoutDirection属性改变排列方向(如TopToBottom、RightToLeft)的效果。Flow布局特别适合需要动态排列组件的场景,如文件管理器等。相比其他布局方式,Flow在特定场景下能提供更灵活的显示效果。

2025-10-10 21:56:58 264

原创 QML学习笔记(三十)QML的布局器(Layouts)

本文介绍了Qt Quick中的Layouts布局器,包括RowLayout、ColumnLayout和GridLayout三种类型。重点讲解了GridLayout的使用方法,它能够自动计算子项大小并实现响应式布局。通过代码示例展示了固定尺寸布局和自适应布局的区别,演示了如何通过Layout.alignment控制对齐方式,以及使用Layout.fillWidth等属性实现自适应尺寸调整。文章指出默认情况下Layouts间距为5px,并分析了当组件尺寸受限时的默认居中显示特性。最后通过移除固定尺寸属性,展示了

2025-10-10 21:35:16 1283

原创 QML学习笔记(二十九)QML的定位器(Positioners:Row,Column,Grid)

本文介绍了QML中的定位器(Positioners)——Row、Column和Grid的使用方法。重点讲解了Grid布局,通过设置行列数、间距和对齐方式,可以轻松实现网格排列效果。文章指出使用定位器时应避免与锚定位冲突,并通过多个示例演示了Grid的灵活布局能力。相比手动锚定,定位器能更高效地实现复杂UI布局,显著提升开发效率。

2025-10-10 14:26:33 817

原创 QML学习笔记(二十八)QML的anchors锚点边距和偏移

本文介绍了Qt Quick中锚定系统的边距(margins)和偏移量(offsets)的使用方法。通过一个九宫格布局示例,演示了如何为矩形元素设置anchors.leftMargin和anchors.topMargin来创建边距效果。当修改中心矩形(编号5)的左边距和上边距时,相邻矩形(编号6)的位置也会随之调整,因为它们的锚点是相互关联的。最后提到可以通过调整锚点策略来控制元素间的相对位置关系。文章通过具体代码展示了边距设置对布局的影响,帮助理解锚定系统中边距的工作机制。

2025-10-10 00:34:36 678

原创 QML学习笔记(二十七)QML的anchors(锚点)

QML中的锚点(Anchors)系统提供了一种基于相对位置的布局方式。每个组件都有7条不可见的锚线(上下左右、水平/垂直中心、基线),通过定义不同组件锚线之间的关系进行定位。本文通过构建九宫格布局演示了锚点的基本用法,包括使用相邻组件的锚线定位和父容器中心线定位两种方式。实践发现,锚点定位虽然灵活,但在窗口尺寸变化时可能产生布局混乱,需要更智能的自适应布局方案。最后介绍了anchors.centerIn是anchors.horizontalCenter和anchors.verticalCenter的简写形式

2025-10-08 16:59:23 722

原创 QML学习笔记(二十六)QML的KeyNavigation和FocusScope

本文介绍了QML中的键盘导航(KeyNavigation)和焦点范围(FocusScope)两个重要概念。KeyNavigation通过附加属性实现按方向键在不同组件间切换焦点,文中通过4个矩形组件示例展示了上下左右键导航的实现方法。FocusScope用于解决嵌套组件中焦点传递混乱的问题,通过将Item改为FocusScope可以确保焦点正确传递到内部组件。这两种技术能有效管理键盘交互行为,为构建可重用的QML组件提供了便利。

2025-10-03 23:38:03 508

原创 QML学习笔记(二十五)QML的Keys附加属性

本文介绍了QML中Keys附加属性的使用,主要包括: Keys附加属性概述: 为视觉元素添加键盘监听能力 通过onPressed和onReleased信号处理按键 使用event.accepted控制事件传播 按键处理方式: 特定按键信号(如onDigit5Pressed) 通用按键信号(onPressed) 两种信号优先级及事件传递机制 组合按键处理: 使用event.modifiers判断修饰键(如Ctrl) 实际应用案例: 通过键盘移动矩形(响应方向键和WASD) 实现平滑移动的方案(使用位图记录按键

2025-10-03 14:52:28 478

阿里云OSS对象存储上传文件(二)C++上传(含代码)

阿里云OSS对象存储上传文件(二)C++上传(含代码)

2023-08-21

阿里云OSS对象存储上传文件(二)C++上传(含代码)

阿里云OSS对象存储上传文件(二)C++上传(含代码)

2023-08-21

QT按钮点击切换QLineEdit焦点

https://blog.csdn.net/Larry_Yanan/article/details/125166226?spm=1001.2014.3001.5501

2022-06-07

QT模拟鼠标事件,实现点击双击移动拖拽等

https://blog.csdn.net/Larry_Yanan/article/details/125046472?spm=1001.2014.3001.5502

2022-05-31

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

TA关注的人

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