Qt官方文档阅读笔记-QStyledItemDelegate Class描述
對應(yīng)的原文為:
?
筆記如下:
簡單描述:
QStyledItemDelegate提供了展示和編輯item的功能,讓這兩種功能更有個性化。QStyledItemDelegate是所有Item View的默認委托。
【注意:QStyledItemDelegate也是Qt模型/視圖框架的一部分】
這里有一個邏輯:每一個Item分配一個ItemDataRole,每一個item都存一個QVariant(我擦,這個有意思,感覺相當(dāng)?shù)牧髅?#xff0c;感覺存這個就和Java里的存Object,屏蔽泛型編程差不多了)。QStyledItemDelegate也為用戶提供了對普通數(shù)據(jù)類型的展示和編輯,如bool,int,string。
為了使得數(shù)據(jù)描述更為準確,Qt為各種數(shù)據(jù)角色提供了各種各樣的委托,為的是讓各種模型中的數(shù)據(jù)有各種的委托。如下所示:
【注意:編輯功能是用QItemEditorFactory創(chuàng)建的】
QItemEditorFactory提供了一個靜態(tài)的方法(C++里面應(yīng)該叫函數(shù)吧),為每一個要編輯的數(shù)據(jù)提供委托。(下面是關(guān)鍵點要注意了)這個靜態(tài)方法有2種,一種是使用自定義工廠setItemEditorFactory()或使用默認工廠QItemEditorFactory::setDefaultFactory()。這里被編輯的數(shù)據(jù)是用EditRole存儲的。QItemEditorFactory類提供了item編輯工廠高級介紹。Color Editor Factory這例子展示了如何去創(chuàng)建自定義編輯工廠。
如何子類化QStyledItemDelegate:
如果委托不支持重繪數(shù)據(jù)類型,那么就要考慮定做一個item,為此需要子類化QStyledItemDelegate,并且重寫paint()和sizeHint()這兩個函數(shù),每一個的item都需要調(diào)用paint()和sizeHint()函數(shù),可以為每一個item定義一個效果。
當(dāng)重新實現(xiàn)了paint()后,將會處理一種特定的數(shù)據(jù)類型,并且用他的超類進行實現(xiàn)。
?
官方提供了一個Star Delegate的例子。
QStyledItemDelegate與QItemDelegate
QItemDelegate:當(dāng)使用當(dāng)前的樣式(Qt自帶的那種,如Windows XP等風(fēng)格),就用他;
QStyledItemDelegate:當(dāng)要使用Qt style sheets這個屌玩意的時候就用他。
?
下一篇將會解析
Star Delegate Example這個官方實例
總結(jié)
以上是生活随笔為你收集整理的Qt官方文档阅读笔记-QStyledItemDelegate Class描述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-使用QGraphicsIt
- 下一篇: DVWA文件上传high级文件上传漏洞