PyQt4 QStandardItem 需要设置输入掩码
我有一个QTreeView(有100行)和一个QStandardItemModel(有10列)
每个表格单元格里都插入了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) )
1 个回答
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
。