pyqt5 tableview QAbstractTableModel
时间: 2023-12-13 08:03:02 浏览: 97
在 PyQt5 中使用 QAbstractTableModel 实现表格模型的过程如下:
1. 导入必要的模块:
```python
from PyQt5.QtCore import QAbstractTableModel, Qt, QModelIndex
from PyQt5.QtGui import QColor
```
2. 创建自定义的表格模型类,并继承 QAbstractTableModel:
```python
class MyTableModel(QAbstractTableModel):
def __init__(self, data, headers):
super().__init__()
self.data = data
self.headers = headers
# 实现必要的虚函数
def rowCount(self, parent=QModelIndex()):
return len(self.data)
def columnCount(self, parent=QModelIndex()):
return len(self.data[0])
def data(self, index, role=Qt.DisplayRole):
if not index.isValid():
return None
if role == Qt.DisplayRole:
row = index.row()
col = index.column()
return str(self.data[row][col])
if role == Qt.BackgroundRole:
row = index.row()
col = index.column()
if row % 2 == 0:
return QColor(Qt.lightGray)
return None
def headerData(self, section, orientation, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
if orientation == Qt.Horizontal:
return str(self.headers[section])
return None
```
3. 创建表格视图,并设置自定义的表格模型:
```python
from PyQt5.QtWidgets import QApplication, QTableView
app = QApplication([])
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
headers = ['Column 1', 'Column 2', 'Column 3']
model = MyTableModel(data, headers)
tableView = QTableView()
tableView.setModel(model)
tableView.show()
app.exec_()
```
这样就可以使用自定义的 QAbstractTableModel 类来实现 PyQt5 的表格视图了。在这个例子中,表格模型包含一个 3x3 的二维数据,每一列有一个标题。你可以根据实际需求,在自定义的表格模型中实现更多的功能,如编辑数据、排序、过滤等。
阅读全文