QT中Connect函數學習


今天學習QT學習之路的自定義信號槽例程,把connect中的信號和槽參數用實例化的方法去調用,發現編譯報以下錯誤:

error: 'reader' is not a class or namespace
&reader, &reader::receiveNewspaper);

error: 'newspaper' is not a class or namespace
QObject::connect(&newspaper, &newspaper::newPaper, \

原來是沒有按照例程寫為

QObject::connect(&newspaper, &Newspaper::newPaper, &reader, &Reader::receiveNewspaper);

一般調用類中的方法都是先實例化,開始也不明白為什么,最后查找資料,原來QObject::connect 是一種 static 類型的方法,普通的的類的方法是
必須通過實例化的對象調用的,但是聲明為 static 類型的方法是屬於類的,不是屬於對象的,可以直接用類名進行調用。

然后在幫助文檔中發現connect沒有寫明是static方法,

 

最后去網上查資料發現,原來是moc系統中已經將函數處理,其實connect函數就是static方法。詳細說明見stack overflow中說明,以下是網址:

https://stackoverflow.com/questions/29218092/where-is-qt-s-pointertomemberfunction-defined

 

小的知識點:

1、自定義信號槽時,如果用到自己定義的類型,必須要先用qRegisterMetaType()函數注冊好,才能創立信號槽連接。

 

 

 
       


免責聲明!

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



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