Python PyQt4 QStandarItem需要设置输入掩码

Python PyQt4 QStandarItem需要设置输入掩码,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我有一个QTreeView(100行)和QStandardItemModel(10列) 每个表格单元格都有作为QStandardItem插入的数据 在第二列中,我需要以下掩码“0-00-00-0-0000”,但QStandardItem没有可用的setInputMask(“0-00-00-0-0000”)方法 我如何做到这一点,是否有更好的方法来完成这一点,也许是使用QTableWidget self.model = QStandardItemModel(self) self.model.set

我有一个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) )

您可以通过子分类创建自定义
项委托
,子分类将创建带掩码的编辑器,然后使用

代表类:

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

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) )
同样的解决方案适用于
QTableWidget