pyqt QtableWidget 表头设置复选框 , 请给出代码例子
时间: 2024-10-09 10:05:56 浏览: 55
在PyQt中,QTableWidget允许你在表头添加复选框。这通常用于数据行的选择操作。以下是创建一个简单的QTableWidget,其中包含一个表头复选框列的例子:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QHBoxLayout, QPushButton, QTableWidget, QTableWidgetItem, QAbstractItemView
from PyQt5.QtGui import QStandardItemModel
class TableWithCheckboxes(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建表格模型
model = QStandardItemModel()
model.setHorizontalHeaderLabels(['常规列', '选择列'])
# 创建表格,并将模型设置到其上
table_widget = QTableWidget()
table_widget.setModel(model)
table_widget.setSelectionBehavior(QAbstractItemView.SelectRows) # 只选择整行
# 添加选择列的复选框
checkbox_column = 1
for i in range(model.rowCount()):
item = QTableWidgetItem() # 初始化单元格
check_box = QTableWidgetItem()
check_box.setFlags(check_box.flags() | Qt.ItemIsUserCheckable) # 设置可勾选
check_box.setCheckState(Qt.Unchecked)
item.setFlags(item.flags() | Qt.ItemIsEnabled) # 禁止编辑
model.setItem(i, checkbox_column, check_box)
# 创建主布局
main_layout = QVBoxLayout()
main_layout.addWidget(table_widget)
# 创建关闭按钮
button_layout = QHBoxLayout()
close_button = QPushButton('Close')
button_layout.addWidget(close_button)
close_button.clicked.connect(self.close)
main_layout.addLayout(button_layout)
widget = QWidget()
widget.setLayout(main_layout)
self.setCentralWidget(widget)
self.showMaximized()
if __name__ == '__main__':
app = QApplication([])
window = TableWithCheckboxes()
app.exec_()
```
在这个例子中,我们在第二个列(索引为1)添加了QTableWidgetItem作为复选框,用户可以选择每一行的数据。`setSelectionBehavior()`函数确保单击复选框时只会选中整行。
阅读全文