我有一个带QStandardItemModel(10列)的QTreeView(100行)
每个表格单元都插入了作为QStandardItem
的数据
在第二列中,我需要以下掩码“0-00-00-0-0000”,但QStandardItem没有可用的setInputMask(“0-00-00-0-0000”)方法。
我如何做到这一点,是否有更好的方法来完成这项工作,也许是使用QTableWidget?
self.model = QStandardItemModel(self)
self.model.setHorizontalHeaderLabels(header)
self.table = QTreeView()
self.table.setModel(self.model)
row=[]
for item in items:
row.append( QStandardItem(item) )
答案 0 :(得分:3)
您可以通过子类化QItemDelegate
创建自定义Item Delegate
,这将创建带掩码的编辑器,然后使用setItemDelegateForColumn
委托课程:
class MaskInputDelegate(QItemDelegate):
def __init__(self, mask, parent=None):
QItemDelegate.__init__(self, parent)
self._mask = mask
def createEditor(self, parent, option, index):
editor = QLineEdit(parent)
editor.setInputMask(self._mask)
return editor
用法:
self.table.setItemDelegateForColumn(1, MaskInputDelegate('0-00-00-0-0000'))
有没有更好的方法来完成这项工作,可能使用QTableWidget?
相同的解决方案适用于QTableWidget
。