我正在向我的QTableWidget中的一個單元格添加一個QCheckBox項,使用方法如下:
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呢?
uj5u.com熱心網友回復:
cellWidget方法回傳單元格中設定的部件,在你的例子中是 "cellWidget",所以有幾個選項可以獲得相關的QCheckBox:
- 使用 findChildcell_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"/span>)。
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://www.uj5u.com/yidong/323164.html
標籤:
