QT 自定義委託

2021-08-14 02:11:32 字數 1576 閱讀 3245

qt 中引入了經典的mvc結構,即模型/檢視/控制分離的結構,不過qt中只有mv沒有c,模型主要獲取資料,檢視主要複製模型的顯示,而委託只要是設定顯示的風格,在某一行某一列使用的不同的部件進行顯示,我在qt的qspinbox的歷程上加上了一點。

通常委託都繼承qstyleditemdelegate和qitemdelegate這個兩個類。兩個類的**基本相同,如果需要使用style sheet 時,建議使用qstyleditemdelegat。

class

spinboxdelegate

:public

qstyleditemdelegate

;

這個函式讓view構建出不同的效果的,可以在這裡根據 qmodeindex &index 進入判定在某一樣或者某一類使用什麼標準的空間進行顯示。

qwidget

*spinboxdelegate::

createeditor(qwidget

*parent,

const

qstyleoptionviewitem

&option,

const

qmodelindex

&index)

const

else

}
將模型裡面的資料顯示到view上
void

spinboxdelegate::seteditordata(qwidget

*editor,

const

qmodelindex

&index)

const

else

#endif
}
修改view上的資料時,自動的呼叫這個函式,將更改之後的資料寫會模型中,進行資料的同步,如果乙個模型同時被多個view使用,進行資料的同步很重要。
void

spinboxdelegate::setmodeldata(qwidget

*editor,

qabstractitemmodel

*model,

const

qmodelindex

&index)

const

else

}
//一般都是這麼寫,沒有理解過這個函式是幹什麼用
void

spinboxdelegate::updateeditorgeometry(qwidget

*editor,

const

qstyleoptionviewitem

&option,

const

qmodelindex

&)const

Qt 自定義事件

最近做的專案,是用qt的完成的,在用到事件派發的時候,要用自己自定義的事件型別來滿足需要。具體就是按照qt的官方文件說明,做了乙個簡單的例子,以免忘記,就先寫下來儲存。首先有個customevent 類,繼承自qevent ifndef customevent h define customeven...

Qt 自定義事件

關於qt的自定義事件也是看了幾個大牛的部落格。總結下心得,如有錯誤請指出。一起成長。先給原始碼。也是第一次原創啊,不知道怎麼寫,呵呵。include include class mywidget public qwidget static const int mycustomeventtype 10...

Qt 自定義按鈕

自定義控制項的實現思路如下 a1.新建乙個類,該類繼承qpushbutton,由於qpushbutton繼承於qwidget,因此可以直接在該繼承類裡面進行布局管理和掛載控制項 a2.新建兩個qlabel例項,即buttonimage和buttontxt 是qlable例項 分別用兩個垂直布局管理器...