qt 设计器 QTableWidget 的某些列可编辑
Posted
技术标签:
【中文标题】qt 设计器 QTableWidget 的某些列可编辑【英文标题】:qt designer certain columns of a QTableWidget editable 【发布时间】:2021-09-15 11:38:06 【问题描述】:我有一个用 Qt Designer 创建的 QTableWidget,想知道是否可以 使某些列可编辑,而其他列不可在 Qt 设计器中编辑。我在 python 中看到了解决方案 或 c++ 但我想知道在 qt 设计器中是否有可能。
【问题讨论】:
【参考方案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,然后自动填充该行的其余部分,例如描述、价格等。该行中的其他字段不应该是可编辑的。以上是关于qt 设计器 QTableWidget 的某些列可编辑的主要内容,如果未能解决你的问题,请参考以下文章
QTableView / QTableWidget:使用 Qt 设计器拉伸最后一列