Qt学习|信号与槽机制

Qt中程序响应是通过信号与槽机制实现,包括右击-转到槽、使用connect函数和lambda槽函数三种方式。信号如按钮点击,槽是对应响应的函数。connect函数用于连接信号和槽,lambda表达式允许简洁地定义短小的槽函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序的响应在qt中是通过信号与槽机制实现的。

两个基本概念

信号(signal):特定情况下被发射的一种通告;(例如:按钮被按下,光标移动,文本被编辑等等)

槽(slot):对信号作出相应的函数,也叫槽函数。

下面以按钮为例,介绍几种信号与槽的方式的实现。

1.右击-转到槽

在ui设计界面右击按钮,选择转到槽,如果选择click(),则表示新建了一个按下该按钮的槽函数,qt会自动生成一个空的函数体,只需要在函数体里写代码即可。

private slots:
    void on_create_maze_button_clicked();

    void on_find_path_button_clicked();

槽函数在.h文件中的声明需要放在slots:里面,并且拥有特定的名称。

2.使用connect函数关联

connect函数的作用是连接信号与槽,它的四个参数分别为

谁发出信号 发出什么信号 谁处理信号 怎么处理

信号和槽函数在参数里有两种写法:

1)

connect(ui->cmdEdit,SIGNAL(returnPressed()),this,SLOT(on_commitButtonClicked()));

2)

connect(ui->cmdEdit,&QBushButton::clicked,this,&Widget::on_cancelButton_clicked);

3.直接使用lambda槽函数

有时函数语句很短,没必要再写一个函数体,可以用lambda函数的形式。

connect(ui->browseButton,&QPushButton::clicked,[this]()
{
    QMessageBox::information(this,"info","clicked");
});

补充:Lambda表达式

[捕获参数] (参数表) -> 返回类型{函数体}

lambda表达式可以赋值给一个函数指针,且当返回类型很明确时,可以省略返回类型的声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值