【发布时间】:2021-11-14 12:39:09
【问题描述】:
我正在使用以下内容将QCheckBox 项目添加到我的QTableWidget 中的一个单元格中:
cell_widget = QWidget()
chk_bx = QCheckBox()
chk_bx.setCheckState(QtCore.Qt.Unchecked)
lay_out = QHBoxLayout(cell_widget)
lay_out.addWidget(chk_bx)
lay_out.setAlignment(QtCore.Qt.AlignCenter)
lay_out.setContentsMargins(0,0,0,0)
cell_widget.setLayout(lay_out)
self.definedEventsTable.setCellWidget(row, select_column, cell_widget)
变量definedEventsTable 是QTableWidget。
上面的代码工作正常,并且复选框在 GUI 上正确显示并且是可检查的。没有错。
但是,当我尝试读取它是否被选中时,我似乎无法这样做。这是我尝试过的:
self.definedEventsTable.item(row, select_column)
self.definedEventsTable.itemAt(row, select_column)
self.definedEventsTable.cellWidget(row, select_column)
每个都返回None,因此无法运行isChecked()。我做错了什么?
编辑
抱歉,以下操作似乎有效。显然我是在摸索什么的。
self.definedEventsTable.cellWidget(row, select_column)
但是,它返回一个QWidget。如何获得QCheckbox?
【问题讨论】:
-
注意:
itemAt返回给定坐标处的项目,参考视口。对于给定的 point,参数是x和y,而不是行和列。然后,默认情况下 QCheckBox 始终处于未选中状态(就像所有 QAbstractButton 子类一样),因此无需设置状态。
标签: python python-3.x pyqt pyqt5