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