以下是一个示例代码,演示如何遍历QTableView的行:
from PyQt5.QtWidgets import QApplication, QTableView, QAbstractItemView, QMainWindow, QVBoxLayout, QWidget, QTableWidgetItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QTableView Example")
self.setGeometry(100, 100, 600, 400)
# 创建一个QTableView
self.table_view = QTableView()
# 创建一个QStandardItemModel,并设置表头和数据
self.model = QStandardItemModel()
self.model.setHorizontalHeaderLabels(["Name", "Age", "Gender"])
self.model.appendRow([QStandardItem("John"), QStandardItem("25"), QStandardItem("Male")])
self.model.appendRow([QStandardItem("Alice"), QStandardItem("30"), QStandardItem("Female")])
self.model.appendRow([QStandardItem("Bob"), QStandardItem("35"), QStandardItem("Male")])
# 设置model为table_view的模型
self.table_view.setModel(self.model)
# 设置table_view的选择模式为行选择
self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
# 创建一个布局,并将table_view添加到布局中
layout = QVBoxLayout()
layout.addWidget(self.table_view)
# 创建一个QWidget,并将布局设置为该QWidget的布局
widget = QWidget()
widget.setLayout(layout)
# 将QWidget设置为主窗口的中心部件
self.setCentralWidget(widget)
# 遍历QTableView的行
self.traverse_rows()
def traverse_rows(self):
for row in range(self.model.rowCount()):
name = self.model.item(row, 0).text()
age = self.model.item(row, 1).text()
gender = self.model.item(row, 2).text()
print(f"Name: {name}, Age: {age}, Gender: {gender}")
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在这个示例中,我们创建了一个QTableView,并使用QStandardItemModel作为其模型。然后,我们设置了表头和数据,并将模型设置给QTableView。我们还设置了QTableView的选择模式为行选择。最后,我们通过调用traverse_rows
方法来遍历QTableView的每一行,并打印出每行的数据。