Qt文档阅读笔记-Object Model初步解析
對象模型
標準C++對象模型提供了對象范式在運行時的高效性。但是他的一些靜態性質在某些領域是不靈活的。在GUI程序中不僅要運行時的高效還需要較高的靈活性。Qt對象模型不急結合了C++運行時的高效并且還相當的靈活。
Qt在C++的基礎上海增加了如下特征:
1. 一個強大的機制使得各個對象之間無縫交流:信號和槽;
2. 可查詢及可被識別:對象屬性;
3. 強有效的事件及事件過濾;
4. 國際化上下文字符串翻譯;
5. 復雜的驅動計時器,在以事件為驅動的GUI中進行優雅的調用;
6. 對象樹:使得各個對象都有所屬;
7. 自定義類型的創建
上述的有些特征是通過在標準C++上繼承得到的,如QObject。信號與槽,屬性系統是由元對象系統提供的,也就是Qt自己的Meta-Object Compiler。
元對象系統是C++的擴展【這里要注意官方對元對象系統用的詞是extension,而國際化上下文等用的是implement】的,這樣特性更好的構成了GUI編程。
?
下面的類都是Qt的對象模型:
| QMetaClassInfo | 關于類的附加信息 |
| QMetaEnum | 關于枚舉器的元數據 |
| QMetaMethod | 關于成員函數的元數據 |
| QMetaProperty | 關于屬性的元數據 |
| QMetaType | 管理元對象系統的命名類型 |
| QObject | 所有Qt對象的基類 |
| QSignalBlocker | 對安全異常的封裝與QObject::blockSignals()一樣 |
| QObjectCleanupHandler | 監控多個QObject的運行周期 |
| QMetaObject | 包含關于Qt對象的元信息 |
| QPointer | 提供指向QObject的受保護模板類 |
| QSingalMapper | 綁定可以被識別的發送方的信號 |
| QVariant | 最常見的Qt數據類型的結合體 |
?
Qt Objects:身份與值
身份是包含一些特征的。比如雙胞胎,雖然他們看起來很像(值一樣),但有不同的身份。
克隆身份是比復制以及賦值更為復雜的。
如何理解上面克隆身份,比如:
克隆身份要考慮QObject::objectName()是否唯一。
object層次結構上,克隆的QtObject在object層次結構上該如何保證。
在運行時向某個對象加了個特別的屬性,克隆時是否也需要保證。
所以Qt對象都是一種標識,而不是一個值。所以QObject的類或子類都禁止其拷貝和賦值操作。
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-Object Model初步解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-使用jjwt生成jwt
- 下一篇: Qt文档阅读笔记-QNetworkPro