Pyqt Model/view框架 4.自定義編輯項
>[上篇](http://www.rzrgm.cn/hangxin1940/archive/2012/12/07/2806450.html)介紹了如何實現item的可編輯,這篇將介紹如何自定義編輯項的顯示
自定義顯示可編輯項
---
將以下方法添加至`MyDelegate`類中:
def createEditor(self,parent,option,index):
"""
創建編輯器
"""
#創建一個QSPinBox
sbox=QSpinBox(parent)
sbox.setRange(0,100)
#返回這個QSpinBox
return sbox
def setEditorData(self,editor,index):
"""
設置編輯器數據
"""
item_var=index.data(Qt.DisplayRole)
item_str=item_var.toPyObject()
item_int=int(item_str)
#設置編輯器的數據為當前索引的值
editor.setValue(item_int)
def setModelData(self,editor,model,index):
"""
給model設置編輯后的數據
"""
#獲取編輯器的數據
data_int=editor.value()
#把數據封裝為Qt類型
data_var=QVariant(data_int)
#設置Model的數據,當前索引與數據
model.setData(index,data_var)
運行后會發現,在編輯模式下的顯示效果改變了。
*要注意的是Delegate(委托)介于View(視圖)層與Model(控制)層之間。*
>[下一篇](http://www.rzrgm.cn/hangxin1940/archive/2012/12/07/2806454.html),我們將學到如何對數據進行排序與過濾
浙公網安備 33010602011771號