數(shù)據(jù)模型的幾種選擇:

image.png

image.png
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Table(QWidget):
def init(self,parent=None):
super(Table, self).init(parent)
#設(shè)置標(biāo)題與初始大小
self.setWindowTitle('QTableView表格視圖的例子')
self.resize(500,300)
#設(shè)置數(shù)據(jù)層次結(jié)構(gòu),4行4列
self.model=QStandardItemModel(4,4)
#設(shè)置水平方向四個(gè)頭標(biāo)簽文本內(nèi)容
self.model.setHorizontalHeaderLabels(['標(biāo)題1','標(biāo)題2','標(biāo)題3','標(biāo)題4'])
# #Todo 優(yōu)化2 添加數(shù)據(jù)
# self.model.appendRow([
# QStandardItem('row %s,column %s' % (11,11)),
# QStandardItem('row %s,column %s' % (11,11)),
# QStandardItem('row %s,column %s' % (11,11)),
# QStandardItem('row %s,column %s' % (11,11)),
# ])
for row in range(4):
for column in range(4):
item=QStandardItem('row %s,column %s'%(row,column))
#設(shè)置每個(gè)位置的文本值
self.model.setItem(row,column,item)
#實(shí)例化表格視圖,設(shè)置模型為自定義的模型
self.tableView=QTableView()
self.tableView.setModel(self.model)
# #todo 優(yōu)化1 表格填滿窗口
# #水平方向標(biāo)簽拓展剩下的窗口部分,填滿表格
# self.tableView.horizontalHeader().setStretchLastSection(True)
# #水平方向,表格大小拓展到適當(dāng)?shù)某叽? # self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
#
# #TODO 優(yōu)化3 刪除當(dāng)前選中的數(shù)據(jù)
# indexs=self.tableView.selectionModel().selection().indexes()
# print(indexs)
# if len(indexs)>0:
# index=indexs[0]
# self.model.removeRows(index.row(),1)
#設(shè)置布局
layout=QVBoxLayout()
layout.addWidget(self.tableView)
self.setLayout(layout)
if name == 'main':
app=QApplication(sys.argv)
table=Table()
table.show()
sys.exit(app.exec_())