回答
Qt的信號是公衆在這個意義上,任何物體可以連接到任何信號。
否信號不能是公共或私人信號。 Qt信號是受保護的類方法。
「信號」 關鍵字將在qobjectdefs.h定義(線69作爲用於Qt的4.6.1):
# define signals protected
UPDATE:信號僅protected
高達和包括Qt 4的所有次要版本。從Qt 5.0起,他們是public
。見https://stackoverflow.com/a/19130831。
我相信信號現在被認爲是「公共」看到這裏http://stackoverflow.com/questions/19129133/qt-signals-and-slots-permissions/19130567#19130567 – johnbakers 2013-10-02 05:40:15
似乎可以有私人信號:http://doc.qt.io/qt-5/qstate.html#finished - 他們是如何創建的? – derM 2017-07-27 14:35:19
插槽是簡單的方法,可以是公開的,保護的或私人的。
正如Andrei指出的那樣,信號只是被保護的重新定義,意味着它們只能由它們所在的類所發出。
如果想使一個類從anoter一個發射的信號,則必須添加它的公共方法(或狹槽)像這樣的:
void emitTheSignal(...) {
emit theSignal(...);
}
我認爲這不回答OP問題。他所指的信號只能由定義它們的類來監聽。 – Daniel 2011-07-22 19:33:49
「他們只能由他們定義的班級發出」......或者是一個朋友班級。 ;) – weberc2 2013-06-24 17:28:20
我不確定這是真的。請參閱:http://stackoverflow.com/questions/19129133/qt-signals-and-slots-permissions文檔可以從其他類發出信號,並且始終是公共的,不受保護。 – johnbakers 2013-10-02 02:35:10
的常用方法,例如在的kdelibs看到的,是這樣的:
Q_SIGNALS:
#ifndef Q_MOC_RUN
private: // don't tell moc, doxygen or kdevelop, but those signals are in fact private
#endif
void somePrivateSignal();
這使得信號私有的,即,它只能通過射出類本身而不是由它的子類。爲了不讓「private:」取代Q_SIGNALS(moc不會將某些私有信號看作是信號),它在Q_MOC_RUN中,它只在moc運行時才被定義。
編輯:這種方法不適用於引入Qt 5(connect(a, &A::someSignal, b, &B::someSlot)
)的新型連接,因爲它們需要信號可訪問。
Qt4中的信號爲protected
,Qt5中的信號爲public
。詮釋Qt5你可以通過添加QPrivateSignal
作爲最後一個參數使他們private
。更多關於此的信息:http://woboq.com/blog/how-qt-signals-slots-work-part2-qt5.html
- 1. 私人QT信號
- 2. 公共/私人
- 3. WordPress的私人/公共信息安全。
- 4. 使用uncrustify公共,私人,信號等inditation?
- 5. 私人和公共財產
- 6. 私人與公共的typedef
- 7. 私人與公共繼承
- 8. 私人和公共職能
- 9. 推送私人或公共?
- 10. 私人與公共港口
- 11. 私人和公共變量
- 12. std :: enable_shared_from_this;公共vs私人
- 13. ES6:公共符號VS私有符號
- 14. 保存私人信息到公共場所
- 15. Java的密鑰對 - 私人 - 公共 - 我只有私人
- 16. 公共訪問私人npm模塊從私人github回購
- 17. C#BestPractice:私人var和公共的getter/setter或公共變種
- 18. 叉公共倉庫到私人和接受公共提交
- 19. Magento;私人/公共文件系統層
- 20. 變化Cloudinary的私人圖片公共
- 21. htaccess - 過濾公共和私人請求
- 22. jquery插件私人和公共屬性
- 23. 公共屬性和私人成員C#
- 24. 推送渠道:公共還是私人?
- 25. 公共私人和保護在objective-c
- 26. 私人領域與公共accessor在c + +
- 27. 私人全球與公共全球
- 28. 課程,通過公共私人
- 29. 需要了解公共和私人
- 30. 私人領域的公共方法
它們也是公共的,任何其他類都可以發出它們,因爲它們是公共函數。這可能已經改變了Qt的先前版本。看到這裏http://stackoverflow.com/questions/19129133/qt-signals-and-slots-permissions/19130567#19130567 – johnbakers 2013-10-02 05:41:02