在qt的物件模型中,我們需要將一部分qt對c++新增的物件作為標識(identity)而不是值(value)。這裡說一下標識和值的區別:值是拷貝的或者分配來的;標識則是轉殖來的。轉殖意味著建立新的標識,而不僅僅是舊標識的乙份拷貝。舉個例子,雙胞胎是不同的標識(identity),他們看起來是一樣的,但是他們有不同的名字,不同的地點,和許多完全不同的社會關係網。
轉殖乙個標識是比拷貝和分配值更複雜的操作。我們在qt物件模型中看到這樣的情形。
乙個qt物件:
1 也許有乙個獨特的qobject::objectname()。如果我們拷貝乙個qt物件,我們將給這份拷貝什麼名字?
2 在物件層次中有位置。如果我們拷貝qt物件,這份拷貝將放在何處?
3 可以關聯到其他qt物件,來傳送或者接受訊號,如果們拷貝乙個qt物件,我們如何將這些鏈結轉移到拷貝物件上?
4 可以在執行時增加新的屬性,這些屬相在宣告時則沒有。如果我們拷貝qt物件,是否拷貝物件包含了原始物件的新增屬性?
出於這樣的原因,qt物件被作為標識(identity)對待而不是值(value)。標識是被轉殖的,不是拷貝或者分配來的,同時轉殖乙個標識是比複製或者分配值更加複雜的操作。因此,qobject及其所有子類(直接子類或者間接子類)的拷貝建構函式和賦值運算子都是無效的。
Qt學習(五) QWidget物件模型
在qt中,所有視窗及視窗控制項都是從qwidget直接或間接派生出來的。在qt中建立物件的時候會提供乙個parent物件指標,下面來解釋這個parent到底是幹什麼的。qobject是以物件樹的形式組織起來的。當你建立乙個qobject物件時,會看到qobject的建構函式接收乙個qobject指標...
Q學習 4 QT的元物件系統
qt對c 進行了擴充套件,提供了三個主要的功能 訊號槽 執行時型別資訊和動態屬性,這三個擴充套件功能都是由 元物件系統 提供的。元物件系統基於三個支撐點 1 oobject為需要使用元物件系統有點的類提供了基類。2 q object巨集宣告在類的私有段中,可用來啟用元物件特徵,如動態屬性,訊號槽。3...
QT5學習筆記(3 2) QT物件模型
在qt中建立物件的時候會提供乙個parent物件指標,下面來解釋這個parent到底是幹什麼的。qobject是以物件樹的形式組織起來的。當你建立乙個qobject物件時,會看到qobject的建構函式接收乙個qobject指標作為引數,這個引數就是 parent,也就是父物件指標。這相當於,在建立...