pyside6:初始化Qtableview 为5行,3列,每个单元格内有个复选框,复选框内容默认为选中状态true. Qtableview 的horizon标题栏内容分别为step1,step2,step3.新建一个按钮名字为save. 点击save按钮,获取每个单元格内的复选框的状态并打印出来
时间: 2023-11-28 15:47:09 浏览: 79
可以按照如下代码实现:
```python
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QTableView, QPushButton, QMessageBox
from PySide6.QtGui import QStandardItemModel, QStandardItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建QStandardItemModel
model = QStandardItemModel(5, 3, self)
model.setHorizontalHeaderLabels(["step1", "step2", "step3"])
# 设置每个单元格的复选框为选中状态
for row in range(5):
for column in range(3):
item = QStandardItem()
item.setCheckState(Qt.Checked)
model.setItem(row, column, item)
# 创建QTableView并设置模型
self.table_view = QTableView(self)
self.table_view.setModel(model)
# 创建保存按钮
save_button = QPushButton("Save", self)
save_button.clicked.connect(self.handle_save_clicked)
# 将QTableView和保存按钮添加到主窗口
self.setCentralWidget(self.table_view)
self.addToolBar().addWidget(save_button)
# 点击保存按钮的处理函数
def handle_save_clicked(self):
for row in range(5):
for column in range(3):
item = self.table_view.model().item(row, column)
if item.checkState() == Qt.Checked:
print(f"Row {row}, Column {column} is checked")
else:
print(f"Row {row}, Column {column} is unchecked")
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
```
运行程序后,会显示一个包含5行3列复选框的QTableView,以及一个Save按钮。点击Save按钮会遍历每个单元格内的复选框,打印出它们的状态(选中或未选中)。
阅读全文