PyQt4 QStandardItem需要setInputMask

时间:2012-01-09 21:43:33

标签: python pyqt pyqt4

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

1 个答案:

答案 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