《Qt快速入門》-- 信號與槽機制

每一個圖形開發語言、工具都有自己的一套的ui交互機制,Qt也不例外,Qt有自己獨特的信號與槽機制用於ui與功能算法的交互。

① Qt的信號與槽機制包含以下三點:

     1.確定是哪個控件發出了信號(Who

     2.確定發出了什麼信號(What

     3.確定這個信號應該調用什麼功能函數(這個函數在Qt中叫做“槽函數”,實際上和類中普通成員函數是一樣的,唯一的不同就是它和控件綁定了

 

② 槽函數的三種:

    1.通過函數:connect(對象1,對象1的函數,對象2,對象2的函數)來實現

       其中,第一個參數:對象1是信號的發出者(一般是一個控件的實例對象),第二個參數:對象1的函數(一般是控件所能發出的信號,如CLICK()........),第三個參數:對象2是信號的接受者(一般是一個界面的實例對象),第四個參數:對象2的函數(一般是類中事先定義好的功能函數,此時這個函數即爲槽函數)。

   2. 通過右擊控件,選擇”轉化槽“   

                                  

    然後選擇相應的信號函數

                                   

然後會自動跳到一個界面,此時一個槽函數的聲明和實現都已經幫你生成了,其中函數名包含控件id名稱(btn_cancel)和相應的信號名稱(clicked)。

                                   

      相信有人會問,在第一個方法中有四個參數, 到這才只有三個(控件,信號,槽函數)呀?額。。少了的第三個參數其實默認爲控件所在的這個窗口(它也是一個實例對象呀)。

    3.(不常用)通過在ui界面中設置:

     如圖所示,在QT Designer窗口中的中間下面有個窗口,選中Singals&Slots Editor標籤 

       點擊”+“號,就可以像類似於connect函數一樣添加槽函數啦~~

       不過這個方法有一個侷限性,就是隻能添加系統中的槽函數,不能添加自定義的槽函數,這個。。。。就很尷尬了。。所以一般使用第一種和第二種方法。。

 

 總結,一般添加槽函數是採用第一種和第二種方法,這兩種方法各有利弊:

① 第一種方法比較繁瑣,不過勝在直觀清晰(代碼可讀性很高),所有connect函數都寫在ui函數中,都集中在一塊,哪個控件,發出什麼信號,哪個窗口接受,做出什麼功能。一目瞭然!(一般connect函數都寫在ui-setUi(this);下面)

② 第二種方法,很方便 (我比較喜歡),但是要看哪個控件發出什麼信號,用什麼功能函數做出反應,都得一個一個去找函數。。其實還好啦。。可以去頭文件去找函數聲明呀,然後ctrl+F,在代碼中查找唄。。嘻嘻嘻

 

看的視頻教程中,視頻中老師一直說Qt的信號與槽機制是他見過的UI交互設計中最簡單方便。。。我接觸的UI交互設計比較少。。以前也簡單接觸過AS,用java寫過安卓小應用,印象中AS的交互設計也挺方便的。。。不過Qt也很優秀的呀!!!嘿嘿嘿

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