Qt信号与槽七种连接方式

Qt信号与槽七种连接方式

1、 F3,F4编辑:拖入按键,按F4选择按键部位,拖动按键部位至mainwindow界面空白位置,并按如下操作:
在这里插入图片描述

图1

2、 signal、slots的Edit方式。如图2:
在这里插入图片描述
图2
3、 QT4下的方式:
(1) connect(bth,SIGNAL(clicked()),this,SLOT(myclicked()));
(2) 编辑myclicked()函数:

void MainWindow::myclicked()
{
    qDebug()<<"myclose";
    ui->label_2->setText("你好");
}

4、 自动连接方式:右击ui界面中的按键,转到槽。
5、 基于函数指针:connect(bth,&QPushButton::clicked,this,&MainWindow::myclicked);
其他与3相同。
6、Emit手动提交:
(1)在头文件中声明:

signals:
    void mysignal();

(2)在on_pushButton_2_clicked()添加emit mysignal();如下:

void MainWindow::on_pushButton_2_clicked()
{
    ui->pushButton_2->setText("HELLO!");
    //手动提交,emit方式
    emit mysignal();
}

(3) 在构造函数中添加:connect(this,SIGNAL(mysignal()),this,SLOT(myclicked()));
注:第6个的执行连接按键和label标签两个的改变。
7、使用lambda函数实现,仅限c++11以上,所以在使用的时候,必须注意.pro文件中是否有CONFIG += c++11;若没有可以手动加上。

connect(bth,&QPushButton::clicked,[bth](){
        if(bth->text()=="lambda")
            bth->setText("QST");
        else
            bth->setText("lambda");
        qDebug()<<"11111111111";
 });

执行后btn上显示lambda和QST点击改变。
并且一个信号可以连接多个槽,一个槽可以被多个信号连接。
附录:
lambda函数介绍:
声明Lambda表达式
Lambda表达式完整的声明格式如下:
[capture list] (params list) mutable exception-> return type { function body }
各项具体含义如下:
capture list:捕获外部变量列表
params list:形参列表
mutable指示符:用来说用是否可以修改捕获的变量
exception:异常设定
return type:返回类型
function body:函数体

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布丁小站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值