【问题标题】:qt designer certain columns of a QTableWidget editableqt 设计器 QTableWidget 的某些列可编辑
【发布时间】:2021-09-15 11:38:06
【问题描述】:

我有一个用 Qt Designer 创建的 QTableWidget,想知道是否可以 使某些列可编辑,而其他列不可在 Qt 设计器中编辑。我在 python 中看到了解决方案 或 c++ 但我想知道在 qt 设计器中是否有可能。

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer qtablewidget


    【解决方案1】:

    您将无法使用 Qt Designer 执行此操作,因为您最多可以使 QtDesigner 创建的项目不可编辑(默认情况下这些项目是可编辑的),而不是代码创建的新行或新列。因此,正如我在this post 中指出的那样,最简单和最实用的解决方案是通过代码使用委托来完成:

    class ReadOnlyDelegate(QtWidgets.QStyledItemDelegate):
        def createEditor(self, parent, option, index):
            editable_columns = (1, 3, 4)
            if index.column() in editable_columns:
                return super().createEditor(parent, option, index)
    
    delegate = ReadOnlyDelegate(self.qtable_widget)
    self.tableWidget.setItemDelegate(delegate)
    

    【讨论】:

      【解决方案2】:

      对于整个专栏,我不这么认为。列的属性中未提供任何标志。如果您的表不是太大,您可以像这样单独编辑项目:

      在设计器中,右键单击QTAbleWidget,然后单击Edit Items...。然后,切换到Items 标签。

      从那里,单击任何项​​目,然后打开 Properties << 选项卡。在那里,您应该找到一个复选框,说明该特定项目是否可编辑。

      【讨论】:

      • 感谢您的回答。 Unf 那行不通。我希望用户能够输入产品 ID,然后自动填充该行的其余部分,例如描述、价格等。该行中的其他字段不应该是可编辑的。
      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2011-05-09
      • 2012-10-18
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      相关资源
      最近更新 更多