【QT】信号和槽

什么是信号和槽

信号

信号指的就是控件发出的特定的信号。
例如按键的信号:

image

槽的意思就是槽函数,可以将槽函数绑定在某个控件的信号上,当这个控件发出这个信号的时候,就会触发这个槽函数(与中断类似)。

如何将信号和槽关联起来

自动关联

右键控件 -> 点击“转到槽” -> 选择其中一个信号 -> 系统会自动在widget.h中添加以下内容:
(槽函数只能声明到 private slots 或者 public 下面)

image

并且会在widget.cpp里面实现这个槽函数:
(实现的效果就是按一下此按键则会打印一次“hello”)

image

手动关联

手动关联需要使用connect函数:

点击查看代码
connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_2_clicked()));
简化:connect(A,SIGNAL(B),C,SLOT(D));
解释:当对象A发出B信号时,就会触发对象C的槽函数D

再增加对应的槽函数:

点击查看代码
void Widget::on_pushButton_2_clicked()
{
    qDebug("world");
}

不要忘了在widget.h文件中添加声明:

点击查看代码
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_pushButton_2_clicked();	//添加声明
private:
    Ui::Widget *ui;
};

ps. 为了方便分析程序,最好给控件修改为合适的名称,尽量通俗易懂。

posted @ 2025-09-15 21:01  膝盖中箭卫兵  阅读(14)  评论(0)    收藏  举报
ORCID iD icon https://orcid.org/0000-0001-5102-772X