【问题标题】:PyQt4 QStandardItem need setInputMaskPyQt4 QStandardItem 需要 setInputMask
【发布时间】:2017-01-15 08:29:27
【问题描述】:

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

【问题讨论】:

    标签: python pyqt pyqt4


    【解决方案1】:

    您可以通过子类化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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2023-04-07
      相关资源
      最近更新 更多