QT_5_ Qt中信號和槽 + 自定義信號和槽 + lambda 表達式


  1.Qt中信號和槽

    1.1 需求:點擊按鈕關閉窗口

    1.2 利用connect進行鏈接

    1.3 參數1 信號發送者(指針) 參數2 發送的信號(信號地址) 參數3 信號的接受者(指針) 參數4 處理槽函數(槽函數地址)

    1.4 connect(btn,&QPushButton::clicked,this,&Widget::close);

    1.5 優點:松散與耦合;將不相關的兩個內容鏈接到一起。

  2. 自定義信號和槽

 

    2.1 需求:

 

      /*

 

       * Teacher   Student 

 

       * ClassIsOver 下課,老師發送自定義信號, 餓了

 

       * 學生  響應餓了的信號, 並且 請老師吃飯

 

       */

 

    2.2 自定義信號寫法

 

          //自定義信號 寫到singles

 

          // 自定義信號寫法:

 

          //1、返回void

 

          //2、信號只需要聲明,不需要實現

 

          //3、自定義信號可以發生重載(即可以有參數);

 

    2.3 自定義槽函數

 

          //自定義槽函數 寫到public slots下,或者全局函數,或者public下,或者是lambda表達式

 

          //1、返回void

 

          //2、需要聲明,也需要實現

 

          //3、也可以發生重載

 

    2.4 觸發自定義信號 emit 自定義信號

 

    2.5鏈接這里就不再陳述了;

 

    2.6 當自定義信號和槽函數發生了重載之后,需要利用函數指針,明確指出函數地址

 

    2.7拓展

 

      2.7.1 信號可以連接信號

 

      2.7.2 一個信號可以連接多個槽函數

 

      2.7.3 多個信號可以連接一個槽函數

 

      2.7.4 信號和槽的參數類型,必須一一對應

 

      2.7.5 信號的參數個數 可以多於槽函數的個數,但是類型也要一一對應

 

      2.7.6 信號和槽是可以斷開連接的disconnect

 

    2.8 Qt4版本的信號和槽的寫法

 

      2.8.1 優點:參數直觀

 

      2.8.2 缺點:參數類型不做檢測

 

      2.8.3 connect (zt,SIGNAL(hungry(QString)),st,SLOT(treat(QString)));

    3. lambda 表達式

      3.1 常使用: [=](){}

      3.2 加上mutable修飾符后,可以修改按值傳遞進來的拷貝(注意是能修改拷貝,而不是值本身)

      3.3 返回值 n = []()->int {return 10000}{};

      3.4 CONFIG += c++11 QT4版本前的低版本使用lambda表達式必須要加入的一行配置信息

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM