我有一个 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) )
最佳答案
您可以通过子类化QItemDelegate
来创建自定义Item Delegate
这将创建带有掩码的编辑器,然后使用 setItemDelegateForColumn
委托(delegate)类:
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'))
Is there a better way of getting this done, maybe with QTableWidget?
相同的解决方案适用于QTableWidget
。
关于python - PyQt4 QStandardItem需要setInputMask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795600/