不能繼承於QObject的類就一定不能使用信號槽?(用一個代理類進行發射就行了)


首先不能繼承QObject的情況在開發中遇到得並不多,筆者在一年多的Qt項目開發中只遇到兩三次。而且都是因為引進了第三方庫導致編譯過程中報錯。

要想解決這個問題其實不難,因為筆者遇到的問題都是想定義一個信號,定義的槽情況沒有遇到過,可以提出一個想法,有需要的朋友試一下。

要想實現信號發送,可以定義一個信號發射器類繼承於QObject,然后在想要發送信息的類里定義一個信號發射器:


圖1

圖2

 

只要在想觸發信號的地方調用信號發射器的sendMsg()函數就可以讓信號發射器將信號發出。

要想實現槽的話,可以同處理信號的方式解決,建立一個信號處理器,將要處理的內容傳入其中即可。

另外還想啰嗦幾句,雖然這個方法是筆者為了解決某些類不能繼承於QObject想到的,但是不只限於解決這一種情形。

在一次項目中,遇到一個問題:很多個(自動添加的)控件,點擊某個控件就將其自帶的信息顯示在一個文本框中,我解決的方案就是將一個信號處理器使用單例模式編寫,在控件的基類中的clicked()響應的槽函數中去調用sendMsg()實現的。

 

http://www.jianshu.com/p/b0dc50cb0119


免責聲明!

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



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