python - PyQt4 QStandardItem需要setInputMask

标签 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.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/

相关文章:

python - 我尝试使用 QFileDialog 在 PyQt 上选择一个文件,但它不运行

python - 根据另一个列表中的元素进行列表划分

qt - PyQt:使用 alpha channel 而不是预乘颜色 channel 创建 QPixmap

python - 如何从 Qtablewidget 中拖动图像并将其添加到场景中?

python - QT4、GTK+、wxWidgets 或 IronPython,用于使用 Python 的 native Windows 应用程序

python - pyqtgraph:在缩放时保持 TextItem 的恒定位置

python - tkinter Canvas : text object variable font size?

Python - 轻松将文本文件内容转换为字典值/键

python - 从 unicode 字符串发送击键 pyqt pyside

python - 动态设置 PyQt 应用程序的版本