Qt5.9中QObject::connect()函式用法(函式使用的前提條件和引數詳解)
本文章主要總結Qt5.9中QObject::connect()函式的用法,全文分為兩大部分,第一部分講解connect函式使用的前提條件,第二部分講解connect函式各個引數詳解和具體的用法例項。
一、首先需要注意的是,connect()函式有且只能在QObject類裡面和QObject派生類裡面使用,自己新建的類裡面(基類不是QObject類和其QObject派生類)使用connect()函式是無效的,編譯時一直報錯。當然,我們新建工程比如widget,mainwindow,dialog都是QObject的派生類,所以可以直接使用connect()函式,實現訊號與槽機制。
1.1類ClassMQTT不是QObject類也不是其派生類時,使用connect()訊號與槽機制時,編譯會報錯,如下圖所示:
connect()函式錯誤用法
connect()函式錯誤用法
1.2類ClassMQTT是QObject類的派生類時,使用connect()訊號與槽機制時,編譯通過,如下圖所示:
connect()函式正確用法
connect()函式正確用法
二、connect()函式各個引數詳解和使用例項。
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection);
2.1函式引數詳解:第一個引數sender為傳送物件;第二個引數為傳送物件裡面的一個訊號;第三個引數為接收物件;第四個引數為接收物件裡面的槽函式。一般我們使用傳送者觸發訊號,然後執行接收者的槽函式。
2.2 connect()函式使用的一個例項:
如上圖所示,訊號引數用SIGNAL包含,槽函式用SLOT包含。然後在對應標頭檔案裡面新增槽函式,如下圖所示:
接著可以定義槽函式的內容,這樣就實現了用訊號觸發執行槽函式的功能了。
2.3 connect的訊號和槽的對應機制可以是一個訊號對多個槽函式,也可以是多個訊號對應一個槽函式。
2.4 錯誤原理:傳送者和接受者必須來自QObject。
參考內容:
http://blog.csdn.net/u012964993/article/details/30454923(重點參考)
http://blog.csdn.net/JuanA1/article/details/6633184
http://blog.csdn.net/kingle123/article/details/72871731
http://blog.csdn.net/jiang_yaling/article/details/72850874
相關文章
- QObject::connect()函式Object函式
- window.open()函式引數用法詳解函式
- 函式引數詳解函式
- OpenCV中的findContours函式引數詳解OpenCV函式
- 通用函式和條件表示式函式
- 條件函式函式
- 函式基礎和函式引數函式
- fcntl函式用法詳解函式
- eval()函式用法詳解函式
- 函式定義、函式的引數、函式的預設引數函式
- MySQL函式-條件判斷函式MySql函式
- python sorted()函式的引數用法Python函式
- impala 條件函式函式
- javascript的replace()函式用法詳解JavaScript函式
- javascript的sort()函式用法詳解JavaScript函式
- getpid()函式用法詳解函式
- makefile 條件判斷用法和 自定函式用法簡單記錄函式
- 程式中的函式引數函式
- ascii函式和substr函式的用法ASCII函式
- 函式、引數、解構函式
- Python中enumerate函式用法詳解Python函式
- js-arguments 函式引數物件詳解JS函式物件
- python函式星號引數詳解Python函式
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 07:函式之函式的引數和返回值函式
- Socket send函式和recv函式詳解函式
- 函式引數 引數定義函式型別函式型別
- 命令列引數解析函式getopt_long() 使用詳解命令列函式
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- 第 8 節:函式-函式定義和引數函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- setjmp 和 longjmp 函式使用詳解函式
- 【函式】Oracle “CONNECT BY” 使用函式Oracle
- JavaScript中bind、call、apply函式用法詳解JavaScriptAPP函式
- 函式的呼叫方式和引數函式
- 函式中引數傳值函式
- Javascript函式引數求值——Thunk函式JavaScript函式