表格视图(QTableView)需要和QStandardItemModel配套用,这是基于MVC设计模式而设计的,M(Model)是QStandardItemModel数据模型,但是不能单独显示出来。V(View)是QTableView视图,用来显示数据模型,这么做的目的是将数据和视图分离,尽量减少其耦合度。
下面就举一个简单的例子,代码的解释就在注释里面
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtGui
class TableView(QWidget):
def __init__(self):
super(TableView, self).__init__()
self.setWindowTitle("QTableView表格式图控件演示")
self.resize(300, 200)
self.model = QStandardItemModel(4, 3)
self.model.setHorizontalHeaderLabels(['id', '姓名', '年龄'])
self.tableview = QTableView()
# 关联QTableView控件和Model
self.tableview.setModel(self.model)
# 添加数据
item11 = QStandardItem("1")
item12 = QStandardItem("小明")
item13 = QStandardItem("20")
self.model.setItem(0, 0, item11)
self.model.setItem(0, 1, item12)
self.model.setItem(0, 2, item13)
layout = QVBoxLayout()
layout.addWidget(self.tableview)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
main = TableView()
main.show()
sys.exit(app.exec_())