Qt文档阅读笔记-Object Model
Object Model
標準C++對象模型提供了非常有效的運行時的對象范例。但是他的靜態屬性在某些領域是不靈活的。圖形用戶界面的編程領域需要運行時的效率和高等級的靈活。Qt提供了這樣能力,通過C++的效率與Qt Object Model的靈活性,達到這種效果。
Qt為C++增加了如下的特性:
1.通過信號與槽機制為對象提供了無縫交流;
2.可查詢和可設計的object properties;
3.強大的事件以及事件過濾;
4.用于國際化的上下文字符串的轉換;
5.復制精致的間隔驅動定時器,讓事件驅動中的GUI能夠更好的完成任務;
6.分層且可查詢的object tree組織object ownership;
7.保護指針(QPointer)當對象被銷毀的時候自動指向NULL,這個不同于C++的指針,C++的指針,當對象被消耗的時候就會產生指針懸掛問題;
8.跨平臺的動態轉化;
9.支持自定義類型的創建;
許多Qt的特性都是在標準C++技術創建的,基于QObject這個類。但The dynamic property system與信號與槽例外,他們需要Meta-object System,而元對象系統是Qt自己的元對象編譯器提供的(moc);
meta-object系統是C++的擴展,這個meta-object系統使得C++語言更加適合GUI的編程。
Important Classes
這些類構成了Qt Object Model的基礎。
1.QMetaClassInfo?? ?關于QMeta相關類的附加信息;
2.QMetaEnum?? ?關于枚舉的Meta-data
3.QMetaObject?? ?包含關于Qt objects的meta信息
4.QMetaProperty?? ?關于Meta-data的性質
5.QMetaType?? ?管理meta-object系統中的命名類型
6.QObject?? ?這個是所有Qt對象的基類
7.QObjectCleanupHandler?? ?觀察多個QObject的生命周期
8.QPointer?? ?模板類型,提供QObject的保護指針
9.QSignalBlocker?? ?通過QObject::blockSignals()實現異常安全的包裝
10.QSignalMapper?? ?從可識別的發送者那綁定信號(可以實現那個對象發射的信號)
QVariant?? ?最常見的Qt數據類型的集合
Qt Objects: Identity vs Value
上面列出了一些Qt object Model的附加特性,需要關注的是這個Qt objects他是那個類,而不是他里面的值,因為知道他是哪個類就可以知道他里面有啥值了!值是可以被拷貝或者重新分配的;identities是可以被克隆的,克隆就意味著創造了新的身份;并不是意味著和舊的一模一樣的身份。舉個例子,雙胞胎都有2個不同的身份,他們雖然看起來一樣,但他們有不同的名字,不同的社會地位,不同的社交圈。
克隆一個身份比拷貝一個數據的值更加的復雜。可以通過查看Qt Object Model來看這個對象的信息;
A Qt Object ...
1.有一個唯一的對象名QObject::objectName();
2.在對象樹中有自己的位置;
3.能夠連接其他的Qt能夠連接其他的Qt Objects并且能發射信號和接收信號;
4.在運行時添加新的屬性;
Qt的對象被視為一種標識,而不是值。
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-Object Model的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++设计模式-单例模式理论与实例
- 下一篇: Qt工作笔记-QCustomplot绘制