QT中connect高级链接——指针、lambda、宏、第五参数

1、connect使用指针

  1. connect(b2,&QPushButton::released,this,&MainWidget::mySlot);  //【擡起】按钮b2时,修改按钮b2的标题  

2、使用lambda表达式

  1. connect(b4,&QPushButton::released,  
  2.        [b4]() // mutable    // 在此处添加mutable关键字,代表传进来的变量可以被修改,不写该关键字则不能被修改  
  3.        {  
  4.             if(b4->text()=="Lambda表达式") b4->setText("表达式Lambda"); //修改按钮标题  
  5.             else b4->setText("Lambda表达式");                          //修改按钮标题  
  6.   
  7.             qDebug()<<"111111111";          //输出"111111111"  
  8.             // qDebug()<<a<<b;              //当方括号内包含变量a、b或为等号时,此处可以输出变量a、b的值  
  9.         }  
  10.   
  11.         );  
  1.     // []代表把外部变量传进来,如果不传是不能被使用的  
  2.     // [b4]代表把变量b4传进来  
  3.     // [=]代表把外部所有局部变量、类中所有成员以值的传递方式  
  4.     // [this]代表把类中所有成员以值的传递方式  
  5.     // [&]代表把外部所有局部变量引用尽量, 引用符号  
  6.     // int a=10,b=100;  
  7.     // ()第二个参数 函数的参数列表  


3、使用宏

  1. connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));    
由于使用宏并不会做错误检查,所以不建议使用

connect()第五个参数的作用:

    连接方式:默认,队列,直接
    //只有在多线程时,才有意义
    //默认的时候:
    //如果是多线程,默认使用队列
    //如果是单线程,默认使用直接方式
    //队列方式:槽函数所在的线程和接收者一样
    //直接方式:槽函数所在线程和发送者一样


对于控件,可以右击控件选择【转到槽】的方式添加槽函数代码。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章