QT中connect函数的lambda匿名用法

Qt 5(及更高版本)配合 C++11 及以上标准时,可以通过 lambda(匿名函数) 来简化信号与槽的连接方式。这样不仅可以将逻辑代码直接内联在连接处,还能根据需要灵活捕获外部变量。下面介绍其基本用法与常见示例。


1. 基本写法

在使用 Qt::connect 时,如果信号是新版的 functor 写法(如 &QPushButton::clicked),即可直接将槽写成一个 lambda,例如:

connect(button, 
    &QPushButton::clicked, 
    this, 
    [=]() { 
        // 这里就是槽函数的实现 
        qDebug() << "Button is clicked!"; 
    });

其中, [=] 表示以“值捕获”的方式捕获本作用域内的变量;还可以使用 [this][&] 等进行更灵活的捕获(参考下文)。


2. 带参数的用法

有些信号是带参数的,比如 QSpinBox::valueChanged(int value),我们可以在 lambda 形参列表里直接声明以接收该参数:

connect(spinBox, 
    QOverload<int>::of(&QSpinBox::valu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值