qabstracttablemodel 配合 tableview用法
时间: 2024-04-14 09:06:23 浏览: 93
qt开发的一个qabstractmodel的子类,方便tableview的数据编辑
QAbstractTableModel是Qt框架中的一个抽象模型类,它是一个纯虚类,不能直接使用,需要通过继承它来实现自己的模型类。QAbstractTableModel提供了一些虚函数,可以实现对数据的操作,比如插入、删除、修改、排序、过滤等。
配合QTableView使用时,需要将自己实现的模型类绑定到QTableView上,这样QTableView就可以根据模型类中的数据来展示表格。
以下是一个简单的示例代码:
```python
from PyQt5.QtCore import Qt, QAbstractTableModel, QModelIndex
from PyQt5.QtWidgets import QApplication, QTableView
class MyTableModel(QAbstractTableModel):
def __init__(self, data, headers):
super().__init__()
self._data = data
self._headers = headers
def rowCount(self, parent):
return len(self._data)
def columnCount(self, parent):
return len(self._data[0])
def data(self, index, role):
if role == Qt.DisplayRole:
return str(self._data[index.row()][index.column()])
return None
def headerData(self, section, orientation, role):
if role == Qt.DisplayRole:
if orientation == Qt.Horizontal:
return str(self._headers[section])
elif orientation == Qt.Vertical:
return str(section + 1)
return None
if __name__ == '__main__':
app = QApplication([])
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
headers = ['A', 'B', 'C']
model = MyTableModel(data, headers)
view = QTableView()
view.setModel(model)
view.show()
app.exec_()
```
在上述代码中,我们自定义了一个MyTableModel类,继承自QAbstractTableModel,并实现了其中的几个虚函数,其中rowCount和columnCount分别返回行数和列数,data函数根据索引返回单元格数据,headerData函数返回表头数据。
在main函数中,我们创建了一个QTableView对象,并将MyTableModel对象设置为它的模型,然后展示界面即可。
阅读全文