Qt下几种信号与槽建立的方式

本文详细介绍了在Qt环境中,通过8种不同的方式来建立信号与槽的连接,包括UI界面设计、信号槽编辑、右击转到槽、宏定义、函数指针、显式指定信号槽地址、手动触发信号和Lambda表达式等方法。每种方法都有其适用场景和特点,旨在帮助开发者更好地理解和运用Qt的信号与槽机制。
摘要由CSDN通过智能技术生成

8种方式完成信号与槽的建立方式

1、ui界面下按f4转入信号槽设计状态,拖动图标完成,f3退出信号槽设计状态。

       信号和槽在系统内就建立了关联。

61839c048affde32c963d97aba5021f4.png

2、ui界面signal slots edit方式,ui操作

    信号和槽在系统内就建立了关联

cc56f0e1dfb899b863907d5725c690b2.png

 

3、ui界面下右击图标,选择转到槽,进行编辑。

会定位到自动生成的槽中,很方便建立信号与槽连接,需要在.h文件生成的类中建立槽函数声明:private slots: 来存放函数声明。

d46da0c0947799dadfe9c7387c533009.png

4,最常规的用法,宏的用法,qt4下使用,现在不推荐,因为检查的方式不严格。


   connect(ui->cleal,SIGNAL(clicked()),this,SLOT(Clear_Display()));

  

 5、qt5后的新方法,明确指向信号函数地址和槽函数地址,在编译时要做类型检查,防止错误


   connect(ui->cleal,&QPushButton::clicked,this, &Widget::Clear_Display);
   

括号内“cleal”是发送信号的对象,类为QPushButton,触发方式为点击;“this”接收信号的对象,它后边的是要执行的槽。

  

 6、手动提交一个函数,可以带入口函数,槽函数对入口变量进行响应。  

 1、通过下方的emit 获取信号,对Display_lcd进行修改
  connect(this,&Widget::send_value,this,&Widget::Display_lcd);
  
  2、发送信号
   void Widget::on_in1_clicked()
  {
   emit send_value(1);
  }
  

 7、connect()函数基于函数指针的重载形式(非重点)
   当信号或槽中有重载时,使用函数指针可以明确告诉编译器使用哪一个重载函数,避免歧义
   

  8、lanbda函数
   使用 Lambda表达式的好处是代码的书写更加方便快捷。在connect 函数中,槽函数参数我们可以改用Lambda表达式的方式来进行传参。

 connect(ui->injia,&QPushButton::clicked,this,
           [=]{
       flag = add;
   });

[=]表示值传递方式捕捉所有父作用域的变量(包括this) ;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAa2trZ2xr,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值