Qt中的私有信号
一、什么是Qt私有信號?
直接引用Qt文檔中的描述:
?
二、私有信號的作用
私有信號只能被響應,不能被用戶代碼來發射(emit)。這是一種對某些信號的權限控制,也就是用戶代碼沒有權力“發號施令”,只能由Qt的類來發射,防止信號被”仿造“。
?
三、是否可以用在我們的代碼中?
1. 首先我的想法是用private signals,測試了一下,編譯不過。
2. 首先觀察Qt是怎么實現私有信號的。如下圖QThread的頭文件中,私有信號在聲明時,添加了一個QPrivateSignal作為輸入參數。
QPrivateSignal是什么呢?QPrivateSignal是在Q_OBJECT宏中定義的一個空的結構體,如下圖:
這是一個私有空結構體。外部代碼或者子類代碼中都無法訪問此結構體,如此一來就保證了信號函數是私有的。
連接槽時,槽是可以直接忽略信號的參數的。所以槽可以寫成無參函數。
綜上,如果我們要自己實現私有信號,只要加一個QPrivateSignal作為信號參數即可。
?
四、最后
這是目前個人對私有信號的初步認識,要在實踐中不斷加深對它的認識和運用。
?
?
?
?
?
?
總結
- 上一篇: 一个迹象表明目前银行很缺钱,那存款利率涨
- 下一篇: LeetCode每日打卡 - 汉明距离