Qt Widgets 架构与开发入门第一章-第三章

Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog) 窗口部件 QT提供的默认基类只有QMainWindow、QWidget、和QDialog这三种,这三种窗体也是用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而他们全部继承自QWidget。不仅如此,所以的窗口部件都继承自QWidget,继承关系如图所示。 1.基础窗口部件QWidget QWidget类是所有用户界面对象的基类,被 阅读详情

Qt Widgets 架构与开发入门


前言

面向 C++ 初学者的 Qt Widgets 学习指南。示例基于 Qt 6,大部分 API 在 Qt 5.15 也可用,差异之处会额外标注。


第 1 章 认识 Qt

1.1 Qt 是什么

Qt 是一个成熟的 跨平台 C++ 应用框架,一次编写、多平台编译运行(Windows、macOS、Linux、Android、iOS、嵌入式)。它不仅提供 GUI 组件,还包含网络、数据库、多媒体、并发、序列化等一整套基础设施,可以理解为「C++ 版的标准 SDK」。

Qt 的两大 UI 技术栈:

  • Qt Widgets:传统的桌面控件体系,基于 C++ 类继承,像 QPushButton、QTableView。适合复杂的、以数据展示为主的桌面应用。
  • Qt Quick / QML:声明式 UI + JavaScript,适合动画丰富、触控友好的现代界面。

本文档只讲 Qt Widgets。

1.2 Qt Widgets vs Qt Quick

维度Qt WidgetsQt Quick
定位传统桌面现代 UI、移动、嵌入式
语言C++QML(声明式) + JS + C++
渲染CPU 光栅化GPU 加速
动画一般出色
数据密集型表格强弱
学习曲线平缓(接近传统 GUI)需要额外学 QML

经验法则:数据密集、以表单/表格为主的工具型软件选 Widgets;强调视觉、动画、跨触屏的产品选 Quick。

1.3 Qt 模块划分

Qt 是模块化设计,常用模块:

  • Qt Core:非 GUI 基础设施,QObject、容器、字符串、文件、时间、事件循环。
  • Qt Gui:窗口系统抽象、事件、绘图底层(QPainter、QImage)。
  • Qt Widgets:传统控件、布局、Model/View。
  • Qt Network:TCP/UDP、HTTP、SSL。
  • Qt Sql:数据库访问。
  • Qt Concurrent:高层并发工具。
  • Qt Test:单元测试。

在 CMake 中通过 find_package(Qt6 REQUIRED COMPONENTS Widgets) 按需引入。

1.4 版本与许可

  • Qt 目前主流版本是 Qt 6(推荐新项目)与 Qt 5.15 LTS(存量项目)。
  • 许可有两种:LGPLv3(开源,可动态链接商用,但需遵守 LGPL 义务)与 商业许可(适合静态链接或需规避 LGPL 的产品)。
  • 本文示例默认 Qt 6.5+。

第 2 章 开发环境搭建

2.1 安装 Qt

推荐 Qt Online Installer(需注册 Qt 账号):

  1. 从 qt.io/download 下载安装器。
  2. 选择组件时至少勾选:
    • 一个 Qt 版本(如 6.7.x)
    • 对应平台的编译器套件(Windows 建议 MSVC 2019/2022 64-bit,或 MinGW)
    • Qt Creator(IDE)
    • CMake、Ninja(通常自动带上)
  3. 磁盘至少预留 20 GB。

2.2 Qt Creator 界面速览

  • 欢迎(Welcome):项目模板、示例、教程入口。
  • 编辑(Edit):代码编辑器。
  • 设计(Design):打开 .ui 文件时的可视化设计器。
  • 调试(Debug):断点、变量查看、GDB/LLDB/CDB 集成。
  • 项目(Projects):配置构建套件(Kit)、编译选项、运行环境。

第一次打开时进入 Preferences → Kits,确认至少有一个绿色勾的 Kit(Qt 版本 + 编译器 + 调试器齐全)。

2.3 编译工具链

  • Windows:MSVC(与 Visual Studio 一致的 ABI,推荐用于发布产品)或 MinGW-w64(免装 VS,适合个人学习)。
  • macOS:自带 Clang。
  • Linux:发行版自带 GCC/Clang。

⚠️ Qt 库和你的应用必须使用 相同编译器/ABI 构建,否则会出现符号找不到、STL 不兼容等错误。

2.4 第一个项目:Hello, Qt Widgets

在 Qt Creator 中:File → New Project → Application (Qt) → Qt Widgets Application,选中 CMake 构建。

生成的 main.cpp 类似:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label("Hello, Qt Widgets");
    label.resize(300, 100);
    label.show();
    return app.exec();
}

关键三步:

  1. 创建 QApplication —— 每个 GUI 程序有且只有一个。
  2. 创建并 show() 一个顶层 widget。
  3. 调用 app.exec() 进入事件循环。

2.5 qmake 与 CMake

Qt 历史上用 qmake(.pro 文件),Qt 6 起 官方推荐 CMake。最小 CMake 示例:

cmake_minimum_required(VERSION 3.16)
project(HelloQt LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)   # 自动运行 MOC
set(CMAKE_AUTOUIC ON)   # 自动处理 .ui
set(CMAKE_AUTORCC ON)   # 自动处理 .qrc

find_package(Qt6 REQUIRED COMPONENTS Widgets)

add_executable(HelloQt main.cpp)
target_link_libraries(HelloQt PRIVATE Qt6::Widgets)

三个 AUTO* 开关帮你省去手动调用 moc/uic/rcc 的麻烦,新项目建议一律打开。


第 3 章 核心机制

Qt Widgets 的所有 API 都建立在几个核心机制之上。理解它们比记 API 更重要。

3.1 对象树与内存管理

Qt 中所有继承自 QObject 的对象可以构成 父子树。规则:

  • 构造时传入父对象:new QPushButton(&parentWidget);
  • 父对象析构时,自动 delete 所有子对象。
  • 因此 有父对象的 QObject 无需手动 delete,也不应放进 std::unique_ptr。
auto *window = new QWidget;          // 顶层,无父对象
auto *btn = new QPushButton("OK", window); // 挂到 window 下
window->show();
// 程序退出、window 被 delete 时,btn 自动 delete

常见陷阱:栈上创建的 QObject 又设置了父对象,会 double free。

3.2 元对象系统(MOC)

Qt 用 MOC(Meta-Object Compiler) 给 C++ 加了三样东西:

  • 运行时反射(className()、property())
  • 信号槽机制
  • 动态 qobject_cast

要让一个类支持这些能力:

class MyWidget : public QWidget
{
    Q_OBJECT   // 必写!否则信号槽用不了
public:
    explicit MyWidget(QWidget *parent = nullptr);
};

MOC 会在编译期扫描带 Q_OBJECT 的头文件,生成 moc_*.cpp 文件。用 CMake AUTOMOC ON 时全自动。

3.3 信号与槽

信号槽是 Qt 的招牌。它是一种类型安全的观察者模式:某个对象发出信号(signal),连接到它的槽函数(slot)会被调用。

class Counter : public QObject
{
    Q_OBJECT
public:
    int value() const { return m_value; }
public slots:
    void increment() {
        ++m_value;
        emit valueChanged(m_value);
    }
signals:
    void valueChanged(int newValue);
private:
    int m_value = 0;
};

连接方式(推荐现代语法):

Counter a, b;
QObject::connect(&a, &Counter::valueChanged,
                 &b, &Counter::increment);

// 也可以连到 lambda
QObject::connect(&a, &Counter::valueChanged, [](int v) {
    qDebug() << "value =" << v;
});

旧语法(字符串宏,不推荐):

connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(increment()));

旧语法只在运行时检查,现代语法编译期检查,IDE 还能跳转和重构。

连接类型(Qt::ConnectionType):

  • Qt::AutoConnection(默认):同线程 = 直连;跨线程 = 队列连接。
  • Qt::DirectConnection:立即调用槽(在发送者线程)。
  • Qt::QueuedConnection:投递到接收者线程的事件队列,异步执行。
  • Qt::BlockingQueuedConnection:跨线程且阻塞等待返回(小心死锁)。

3.4 事件循环

QApplication::exec() 启动的就是主事件循环。它做三件事:

  1. 从操作系统收事件(鼠标、键盘、绘制、定时器)。
  2. 分发给对应的 QObject(通过 event() 方法)。
  3. 处理跨线程投递的槽调用(队列连接)。

主线程绝不能阻塞事件循环,否则界面会假死。耗时任务应放到线程或 QtConcurrent(第 9 章)。

QCoreApplication::processEvents() 可以在长任务中手动泵一次事件,让 UI 响应,但通常是设计不佳的信号,慎用。

3.5 属性系统

Q_PROPERTY 声明一个可反射、可绑定到 QSS/动画的属性:

class Star : public QWidget
{
    Q_OBJECT
    Q_PROPERTY(int rating READ rating WRITE setRating NOTIFY ratingChanged)
public:
    int rating() const { return m_rating; }
    void setRating(int r) {
        if (r == m_rating) return;
        m_rating = r;
        emit ratingChanged(r);
    }
signals:
    void ratingChanged(int);
private:
    int m_rating = 0;
};

好处:

  • 可以被 QPropertyAnimation 直接动画化。
  • 可以在 QSS 里通过属性选择器匹配。
  • 支持 setProperty("rating", 5) 动态设置。

Qt Widgets与QML、Qt Quick的区别及对比 很多人会问已经有了Qt Widgets,为什么还要引入QML和Qt Quick? 其实引入QML和Qt Quick是为了更好地满足现代化UI界面(要炫酷和复杂的UI)的需求,提高开发效率和代码可维护性。同时,Qt Widgets和QML/Qt Quick可以灵活地结合使用。 阅读详情

相关推荐

从Qt Widgets到Qt Quick:现代跨平台GUI开发实战指南

GUI开发是构建软件用户界面的核心技术,其核心原理在于将数据与视图分离,通过事件驱动实现用户交互。在跨平台开发领域,Qt框架凭借其信号与槽机制和硬件加速渲染,提供了高效的技术解决方案。对于需要适配多种屏幕尺寸和DPI的现代应用,传统的基于像素级布局的控件拖拽方式面临挑战。Qt Quick与QML引入声明式UI范式,将界面描述与业务逻辑解耦,支持流畅动画与触摸交互,显著提升了开发效率和用户体验。本文通过对比Qt Widgets与Qt Quick的适用场景,结合信号与槽、模型/视图等核心机制,深入探讨了在桌面、

weixin_30680385的博客 530

Qt QWidget介绍及学习方法路线分享

QWidget 是什么?QWidget是 Qt 框架中最基本的图形用户界面组件类。所有的可视控件都直接或间接继承自QWidget。重写绘图事件通过重写paintEvent方法来自定义控件的绘制。protected:QWidget是Qt中的基本控件类,用于创建用户界面的各种元素。它是所有用户界面控件的基类,包含了各种属性和方法,可以用来创建和管理各种用户界面元素。一些常见的QWidgetQLabel:用于显示文本或图像的标签控件。:用于触发操作的按钮控件。QLineEdit。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 1174

QT:Widgets中的模型/视图架构

在上一个程序中继续添加新的类Q_OBJECTpublic:/** 这个函数是委托类的一个重要成员函数,* 它的任务是创建用于编辑对应单元格数据的实际编辑器控件。* 在这里,它创建了一个 QSpinBox(整数输入框)作为编辑器,* 这个 QSpinBox 将在用户想要编辑某个符合该委托要求的单元格数据时显示出来供用户操作。*/// 创建编辑器// 去掉了 QSpinBox 的边框//QSpinBox 可输入的数值范围是从 0 到 100/*

qq_43441284的博客 1332

Qt Widgets 库总结

Qt Widgets 库

C/C++ 1446

Qt Widgets、QML、Qt Quick 的区别

Widgets、QML、Qt Quick 傻傻分不清楚

青春不老,奋斗不止! 7万+

Qt Widgets、QML与Qt Quick

随着跨平台开发的需求不断增加,Qt 成为了开发现代应用程序的重要工具之一。特别是在界面设计方面,Qt 提供的 QML 和 Qt Quick 为开发人员提供了强大的支持。

m0_62599305的博客 2052

Qt学习——控件Widgets

Qt的控件可以在设计窗口左边部分看到 各个控件的使用,可以直接拖动至Dialog中即可,将界面布置完成后,再在源文件中编写对应的代码。 下面通过一个综合的使用,熟悉一下常用控件: 1.首先将一个QLabel,一个QLineEdit,两

liming's blog 6589

Qt Creator基础与C++ Widgets编程快速入门

本章节详细介绍了如何创建Qt项目,管理项目文件和资源,并准备版本控制和发布。项目创建步骤简述了从设置.pro文件到基本编码流程。项目文件结构部分解释了项目中各文件和目录的作用。使用版本控制系统部分,强调了团队协作的重要性。打包和发布步骤提供了一个基本指南,以便开发者了解如何将应用程序部署到生产环境中。创建自定义信号和槽是扩展Qt应用程序以响应用户交互或程序内部事件的重要手段。这允许开发者在适当的时候执行特定的逻辑。

weixin_29867767的博客 746

Qt的Widgets学习

前言: 所有的qt类都继承与QObject,这个包括所有的widgets。因为QWidget是QObject的子类。如果说一个widget没有父类,则我们称它为top-level window。 任何widget都能被用作top-level window,但是在大多数时候,我们创建一个top-level window继承与QDialog或者QMainWindow或者QWidget,事实上QDial...

热铁皮屋上的猫的博客 3174

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 407

Fluent DPM模型保姆级教程:三通管颗粒流动模拟,从网格导入到轨迹图生成

本文提供Fluent DPM模型在三通管颗粒流动模拟中的保姆级教程,涵盖从网格导入到轨迹图生成的全流程。通过详细步骤和参数设置,帮助用户掌握DPM模型在颗粒流动模拟中的关键技巧,适用于化工、能源等领域的工程应用。

weixin_30615767的博客 579

【QT教程】QT6 Widgets深入剖析

Widgets的概念与分类Widgets的概念与分类在QT6开发环境中,小部件(Widgets)是构成用户界面的基本元素。QT6提供了一个丰富的库,用于创建桌面、移动和嵌入式应用程序的用户界面。本节将详细介绍小部件的概念和分类。Widgets的概念小部件是图形用户界面(GUI)编程中的一个重要概念。它是构成用户界面的基本元素,可以是按钮、文本框、标签、滑动条等。在QT中,小部件是一个拥有绘制和事件处理功能的对象。通过组合和使用这些小部件,开发者可以创建出功能丰富、界面友好的应用程序。

QT性能优化QT原理源码QT界面美化 2902

Rockchip平台之RK3566/3568 OS02N10

文章摘要 本文主要介绍了200W摄像头传感器OS02N10在RK3566平台上的兼容与适配过程。作者基于之前的400W摄像头兼容经验,针对200W摄像头进行了类似的适配工作。文章详细阐述了RK3566芯片的特性和OS02N10传感器的技术参数,包括分辨率、接口和功耗等。适配过程分为三个关键部分:DTS设备树文件配置(定义I2C地址、电源域和GPIO控制等)、驱动文件开发(寄存器初始化和操作)以及XML和JSON配置文件调整(图像参数设置)。作者特别强调了初始化数组中空寄存器终止条件的重要性,并分享了兼容过程

different_xzh的博客 2412

高级QT Widgets图形绘制技巧

Qt_Widgets概述Qt Widgets概述引言在软件开发领域,Qt框架因其跨平台性、强大的图形界面设计能力以及丰富的类库支持而备受开发者青睐。Qt Widgets作为Qt框架中的一组核心组件,为开发者提供了构建桌面应用程序的强大工具集。本章节将对Qt Widgets进行详细的介绍和概述。Qt Widgets的基本概念Qt Widgets提供了一系列用于创建用户界面的控件,包括但不限于按钮、标签、文本框、复选框、滑块等。

QT性能优化QT原理源码QT界面美化 2018

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2308

一文吃透 SAP IDoc 状态码:从 TEDS1 到 WE02 排障,再到 ABAP 自动化监控

在 SAP 集成场景里,IDoc 往往是最常见、也最容易被低估的一条生命线:采购订单、发票、主数据、库存移动……只要系统之间要稳定地交换结构化业务数据,IDoc 就经常登场。真正让人头疼的,并不是 IDoc 本身,而是它在链路里到底走到了哪一步、卡在了哪里、该找谁背锅。这篇文章把常用的 IDoc 状态码按出站、入站拆开讲清楚,并且把每个状态对应的真实世界故障现象、排查入口、以及可以落地的 ABAP 监控代码串起来,让你看到状态码就能想到动作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 408

Qt Widgets 框架深度解析:架构、演进与现代应用

摘要:Qt Widgets框架概述 Qt Widgets是基于C++的成熟UI工具包,专为构建高性能桌面应用而设计。其核心架构包含五大支柱:QWidget基类(所有UI元素的父类)、信号与槽机制(类型安全的对象通信)、事件系统(处理用户交互)、绘图系统(通过QPainter实现精细渲染)和布局管理(自动调整界面)。Qt Widgets与Qt Quick形成互补定位:前者适用于功能密集的桌面应用,后者更适合移动端的现代界面。尽管声明式UI流行,Qt Widgets凭借其稳定性、性能优势和底层控制能力,在CAD

greenspan的专栏 966

【Python机器学习】决策树与随机森林:解释性与鲁棒性的平衡

本文深入探讨了决策树和随机森林在解释性与鲁棒性之间的权衡。决策树以其完美的可解释性、快速的推理速度和无需特征标准化等优势,在许多场景中仍然是首选算法。一个经过合理剪枝的决策树,其每个决策路径都可以转化为业务规则,这在金融风控、医疗诊断等对透明度有严格要求的领域无可替代。然而,单棵决策树的高方差和容易过拟合的特性限制了其泛化能力。随机森林通过集成学习的思想,巧妙地解决了这个矛盾。它维持了相对较好的解释性(通过特征重要性、OOB估计等方式),同时通过多棵树的投票或平均,大幅降低了模型的方差。

nmdbbzcl的博客 628

QT Widgets模块源码分析

节1_1QT_Widgets模块简介节1_1,QT Widgets模块简介QTWidgets是QT框架中的一个重要模块,它为应用程序提供了一系列的用户界面组件(即控件),如按钮、对话框、工具栏、菜单等。通过使用QTWidgets模块,开发者可以轻松地创建出具有丰富用户界面的应用程序。QTWidgets模块基于QT的核心模块,提供了一套完整的应用程序开发工具。这套工具不仅包括用户界面组件,还包括事件处理、布局管理、样式表支持等功能。这些功能使得QTWidgets成为开发桌面应用程序的首选工具。

QT性能优化QT原理源码QT界面美化 2838

2026快手爬虫终极指南:JA4+指纹绕过+sign全逆向+AES响应解密(附可运行代码)

快手2026反爬破解实战指南 本文深入剖析快手2026年最新反爬体系,提供完整的破解方案: 四层防御体系:从传输层(JA4+指纹)、应用层(sign参数)、设备层到行为层,90%的爬虫在前两层即被拦截 JA4+指纹绕过:使用curl_cffi模拟Chrome 124的TLS指纹,完美匹配真实浏览器特征 sign参数逆向:通过动态调试提取加密逻辑,Python实现MD5签名算法,包含参数排序和盐值处理 响应解密:破解AES-GCM加密接口数据,完整还原响应内容 技术亮点: 使用curl-impersonate

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1806

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5881

【02】Qt Widgets Desiner 快速入门

本文介绍了使用 Qt Widgets Designer 设计图形界面的四个步骤:选择表单和控件、布局控件、连接信号与槽、预览表单。通过 RGB 控制器示例,演示了如何拖放控件、设置栅格布局、关联滑块与调节框的值,并调整属性范围(0-255)。最后通过预览验证交互效果和布局响应。

2501_92578370的博客 2441

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Rust Qt Binding Generator模板项目解析:Qt Widgets与Qt Quick快速上手

Rust Qt Binding Generator是一款强大的工具,能够帮助开发者轻松生成Rust代码与Qt和QML之间的绑定,实现Rust代码在Qt应用中的高效使用。本文将深入解析其模板项目,为新手和普通用户提供Qt Widgets与Qt Quick的快速上手指南。 ## 项目概述:Rust与Qt的无缝连接 🚀 Rust Qt Binding Generator的核心功能是生成绑定代码,让

gitblog_00834的博客 859

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

QT Widgets模块源码解析与实践

Widgets模块简介Widgets模块简介QTWidgets是QT框架中负责构建和管理图形用户界面(GUI)的一个模块。它包含了诸如窗口、对话框、工具栏、菜单等标准GUI组件的类和接口。QTWidgets模块建立在QT核心模块之上,为应用程序提供了丰富多样的界面元素和布局管理器,帮助开发者创建结构化且美观的用户界面。Widgets模块的核心概念窗口和子窗口在QTWidgets中,所有的界面元素都是从QWidget类继承的。

QT性能优化QT原理源码QT界面美化 2902

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Qt实战. Qt Widgets、QML、Qt Quick 的区别

widgets 主要针对桌面的,QML主要针对移动端 对于传统的桌面程序来说,优先考虑使用 Qt Widgets, 若要开发更“现代”的 UI 与高级应用,建议使用 Qt5.x + QML 2.x + QtQuick 2.x。 对于移动端开发来说,建议使用 QML,协同 JavaScript,简单快捷、渲染效果更佳、界面更炫酷。不建议使用 Qt Widgets,其显示效果、适应性都不好。 相比之下,Qt Widgets 更“老”、更成熟,而 QML/Qt Quick 则更“新”、更“现代”。 无论如何.

qq_40851561的博客 1193

QT Widgets设计与实践

这一章节以介绍Qt Widgets生态的基础知识开始,并引导读者理解其历史、结构以及与Qt Quick的关系。结合实战案例的解析,旨在提供从理论到实践的全面指南,帮助开发人员在使用Qt进行跨平台GUI开发时建立起坚实的知识基础。自定义事件处理策略自定义事件处理策略在软件开发中,尤其是Qt框架下进行应用程序设计时,事件处理是核心功能之一。事件通常指的是用户与界面元素交互产生的行为或系统内部活动的变化,例如按钮点击、键盘输入或窗口关闭等。

QT性能优化QT原理源码QT界面美化 1473
下一篇: Qt Widgets 架构与开发入门第四章-第六章
「已注销」
博客等级 码龄3年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值