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

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

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

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

Qt下几种信号与槽建立的方式_第1张图片

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

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

Qt下几种信号与槽建立的方式_第2张图片

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

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

Qt下几种信号与槽建立的方式_第3张图片

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) ;

Qt下几种信号与槽建立的方式_第4张图片

 

你可能感兴趣的:(qt,c++)