【问题标题】:ReadOnly row for more than one QTableWidget with class and get more efficiencyReadOnly 行多于一个 QTableWidget 与类并获得更高的效率
【发布时间】:2017-09-16 18:32:26
【问题描述】:

我怎样才能为不止一个 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)

【问题讨论】:

  • “我不想每张桌子都放同样的代码”是什么意思?
  • 例如:self.Size = QTableWidgetEnDisabledItem(self.general_table, "enabled") self.general_table.setItemDelegateForRow(index.row(),self.Size) self.Size = QTableWidgetEnDisabledItem(self.layers_table, "enabled") self.layers_table.setItemDelegateForRow(index.row(),self.Size)

标签: python pyqt pyqt4 qtablewidget qtablewidgetitem


【解决方案1】:

您可以创建一个包含表的列表,您必须使用 for 来执行您想要的命令。

tables = [self.general_table, self.layers_table]

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

【讨论】:

  • 它工作完美,非常有帮助。我认为如果我使用列表,我也必须更改类参数。但是好主意蚂蚁tkank你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2016-08-17
  • 2022-01-17
  • 1970-01-01
  • 2016-01-22
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多