Qt信号槽

Qt 信号槽机制整理笔记

一、信号槽机制简介

  • 信号槽机制本质上是将控件(如按钮)的某个动作(如点击)与处理函数(槽函数)关联起来。

  • 当用户触发某个动作(如点击按钮)时,自动调用绑定的处理函数。


二、核心函数:connect()

1. 函数原型(现代写法)

1
connect(ui->pushButton, &QPushButton::clicked, this, &Widget::handleClick);

2. 参数解析

参数位置 含义
ui->pushButton 信号的发送者(控件),通常是通过 Qt Designer 创建的控件,由 ui 指针访问。
&QPushButton::clicked 所发送的信号,使用函数指针形式标明。
this 信号接收者(槽函数所属对象),通常是当前类对象。
&Widget::handleClick 槽函数(处理信号的方法),同样使用函数指针标明。

三、注意

1. connect() 的本质

  • connect() 是由 QObject 提供的静态函数,用于将信号槽函数连接起来。

  • 在 Qt 中,控件的“点击”等操作会触发信号,开发者通过连接槽函数来处理这些信号。

2. 关于 ui->pushButton

  • 使用 Qt Designer 创建控件时,会自动生成对应的 objectName 属性。

  • .ui 文件编译阶段,uic 工具会根据控件的 objectName 属性,自动生成相应的 C++ 成员变量,并封装在 Ui::Widget 类中。qmake 会在构建过程中调用 uic 来完成这个自动生成过程。

  • 通过 ui->pushButton 就能访问到按钮控件。

3. 代码动态创建控件的情况

  • 若控件是通过代码手动创建的,ui 并不会自动包含该控件。

  • 这时应将控件设置为当前类的成员变量,以便 connect() 中访问。


Qt信号槽
https://weihehe.top/2025/06/26/信号槽/
作者
weihehe
发布于
2025年6月26日
许可协议