纳速健身

标题: [pyqt5]pyqt5中的tableWidget添加checkBox、comboBox和tableView中添加checkBox [打印本页]

作者: awagink    时间: 2021-1-12 09:33
标题: [pyqt5]pyqt5中的tableWidget添加checkBox、comboBox和tableView中添加checkBox

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

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


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

  1. col=...

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

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

  7. #对该行其余元素赋值
  8. for i in range(col):
  9.         if i != y:
  10.                 self.tableWidget.setItem(x, i, QtWidgets.QTableWidgetItem('...'))
复制代码

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

要是需要读取checkBox的状态

  1. #获取(x,y)的状态
  2. self.tableWidget.item(x,y).checkState()
复制代码


参考:QTableWidget中checkBox状态判断

添加comboBox
  1. comboBoxList=[...]

  2. comboBox=QtWidgets.QComboBox()
  3. comboBox.addItems(comboBoxList)
  4. self.tableWidget.setCellWidget(x,y,comboBox)        #在(x,y)添加comboBox
复制代码


要是需要读取comboBox的值

  1. #获取(x,y)的值
  2. self.tableWidget.cellWidget(x,y).currentText()
复制代码



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


需要self.ui.tableWidget.cellWidget(0,0).isChecked()来检测选中状态




欢迎光临 纳速健身 (https://nasue.com/) Powered by Discuz! X3.4