awagink 发表于 2021-1-12 09:33:50

[pyqt5]pyqt5中的tableWidget添加checkBox、comboBox和tableView中添加checkBox


添加checkBox
QTableWidgetItem有CheckState属性,既能显示QCheckBox,也能读取状态

self.check = QtWidgets.QTableWidgetItem()
self.check.setCheckState(QtCore.Qt.Unchecked)        #把checkBox设为未选中状态
self.tableWidget.setItem(x,y,self.check)                #在(x,y)添加checkBox

注:在我测试时发现,若tableWidget不止一行,则必须给每行每列元素进行赋值,如果某一行未赋值完就对下一行赋值,会出现奇怪的错误

col=...

#设定列数
self.tableWidget.setColumnCount(col)

self.check = QtWidgets.QTableWidgetItem()
self.check.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(x,y,self.check)

#对该行其余元素赋值
for i in range(col):
        if i != y:
                self.tableWidget.setItem(x, i, QtWidgets.QTableWidgetItem('...'))

由于是之前一段时间写的,这里就没有对错误进行复现,就当是做一个简单的记录

要是需要读取checkBox的状态

#获取(x,y)的状态
self.tableWidget.item(x,y).checkState()

参考:QTableWidget中checkBox状态判断

添加comboBox
comboBoxList=[...]

comboBox=QtWidgets.QComboBox()
comboBox.addItems(comboBoxList)
self.tableWidget.setCellWidget(x,y,comboBox)        #在(x,y)添加comboBox

要是需要读取comboBox的值

#获取(x,y)的值
self.tableWidget.cellWidget(x,y).currentText()


tableView中添加checkBox
                # 方法一:setCellWidget方法,每一行的第一列加入checkbox,需要self.ui.tableWidget.cellWidget(0,0).isChecked()来检测选中状态
                checkbox = QCheckBox()
                # 将所有的复选框都添加到 全局变量 all_header_combobox 中
                all_header_combobox.append(checkbox)
                self.ui.tableWidget.setCellWidget(row_num, 0, checkbox)

需要self.ui.tableWidget.cellWidget(0,0).isChecked()来检测选中状态
页: [1]
查看完整版本: [pyqt5]pyqt5中的tableWidget添加checkBox、comboBox和tableView中添加checkBox