我使用以下方法将一个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
发布于 2021-09-20 20:56:42
cellWidget方法返回单元格中的小部件集,在您的示例中是"cellWidget“,因此有几个选项可以获得关联的QCheckBox:
-使用findChild
cell_widget = self.definedEventsTable.cellWidget(row, select_column)
checkbox = cell_widget.findChild(QCheckBox)
if checkbox:
print(checkbox)-自定义属性
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.checkbox = chk_bx
self.definedEventsTable.setCellWidget(row, select_column, cell_widget)然后:
cell_widget = self.definedEventsTable.cellWidget(row, select_column)
if hasattr(cell_widget, "checkbox"):
checkbox = cell_widget.checkbox
print(checkbox)-自定义QWidget
class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.chk_bx = QCheckBox()
self.chk_bx.setCheckState(QtCore.Qt.Unchecked)
lay_out = QHBoxLayout(self)
lay_out.addWidget(self.chk_bx)
lay_out.setAlignment(QtCore.Qt.AlignCenter)
lay_out.setContentsMargins(0,0,0,0)cell_widget = Widget()
self.definedEventsTable.setCellWidget(row, select_column, cell_widget)然后:
cell_widget = self.definedEventsTable.cellWidget(row, select_column)
checkbox = cell_widget.chk_bx
print(checkbox)https://stackoverflow.com/questions/69260616
复制相似问题