ReadOnly用于多个QTableWidget的行,并且可以提高效率

时间:2017-04-20 08:30:19

标签: python pyqt pyqt4 qtablewidget qtablewidgetitem

我怎么能为一个以上的QTableWidget(不仅仅是self.general_table)重写下面的代码? 我不想为每张桌子添加相同的代码。

class QTableWidgetEnDisabledItem(QtGui.QItemDelegate):
    """
    Create a readOnly/editable QTableWidgetItem
    """
    def __init__(self, parent, state):
        self.state = state
        QtGui.QItemDelegate.__init__(self, parent)

    def createEditor(self, parent, option, index):
        item = QtGui.QLineEdit(parent)
        if self.state == "disabled":
            item.setReadOnly(True)
        elif self.state == "enabled":
            item.setEnabled(True)
        return item

执行QTableWidgetEnDisabledItem类

self.Size = QTableWidgetEnDisabledItem(self.general_table, "enabled")
self.general_table.setItemDelegateForRow(index.row(),self.Size)

1 个答案:

答案 0 :(得分:2)

您可以创建一个列表,其中包含您必须使用的表来执行所需的命令。

tables = [self.general_table, self.layers_table]

for table in tables:
    itemDelegate = QTableWidgetEnDisabledItem(table, "enabled") 
    table.setItemDelegateForRow(index.row(), itemDelegate)