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()第五個參數的作用:

    連接方式:默認,隊列,直接
    //只有在多線程時,纔有意義
    //默認的時候:
    //如果是多線程,默認使用隊列
    //如果是單線程,默認使用直接方式
    //隊列方式:槽函數所在的線程和接收者一樣
    //直接方式:槽函數所在線程和發送者一樣


對於控件,可以右擊控件選擇【轉到槽】的方式添加槽函數代碼。


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