回答
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. 私人和公共變量
- 7. 私人和公共職能
- 8. 私人與公共繼承
- 9. 私人與公共港口
- 10. 保存私人信息到公共場所
- 11. 公共訪問私人npm模塊從私人github回購
- 12. 叉公共倉庫到私人和接受公共提交
- 13. C#BestPractice:私人var和公共的getter/setter或公共變種
- 14. 通過http設置公共(或私人)符號服務器
- 15. 公共getter和setter方法私人
- 16. Magento;私人/公共文件系統層
- 17. 私人/公共密碼與Node.js
- 18. 私人全球與公共全球
- 19. GitHub - 私人與公共合作伙伴
- 20. 公共和私人訪問修飾符
- 21. 私人領域與公共accessor在c + +
- 22. 角 - 結合公共/私人性質
- 23. 公共私人和保護在objective-c
- 24. 公共屬性和私人成員C#
- 25. GitHub Enterprise公共與私人回購
- 26. 私人領域的公共方法
- 27. 需要了解公共和私人
- 28. 公共插槽,但不是qt中的信號
- 29. 保持一些網絡服務的私人和公共別人
- 30. Microsoft Graph過濾器公共和私人聯繫人
它們也是公共的,任何其他類都可以發出它們,因爲它們是公共函數。這可能已經改變了Qt的先前版本。看到這裏http://stackoverflow.com/questions/19129133/qt-signals-and-slots-permissions/19130567#19130567 – johnbakers 2013-10-02 05:41:02