pyqt5 tableview QAbstractTableModel 编辑
时间: 2024-01-15 19:05:00 浏览: 179
你可以使用PyQt5中的QAbstractTableModel来创建可编辑的TableView。下面是一个简单的示例代码:
```python
from PyQt5.QtCore import Qt, QAbstractTableModel, QVariant
from PyQt5.QtWidgets import QApplication, QTableView
class MyTableModel(QAbstractTableModel):
def __init__(self, data):
super().__init__()
self.data = data
def rowCount(self, parent=None):
return len(self.data)
def columnCount(self, parent=None):
return len(self.data[0])
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole or role == Qt.EditRole:
return QVariant(self.data[index.row()][index.column()])
return QVariant()
def setData(self, index, value, role=Qt.EditRole):
if role == Qt.EditRole:
self.data[index.row()][index.column()] = value
self.dataChanged.emit(index, index)
return True
return False
def flags(self, index):
return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable
if __name__ == '__main__':
app = QApplication([])
data = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
model = MyTableModel(data)
view = QTableView()
view.setModel(model)
view.show()
app.exec_()
```
这个示例中,我们定义了一个自定义的QAbstractTableModel子类`MyTableModel`,重写了一些必要的方法来实现表格的编辑功能。在`setData`方法中,我们更新了相应单元格的值,并发出`dataChanged`信号来通知视图更新。最后,我们使用QTableView来显示这个自定义的模型。
你可以根据自己的需求,修改`MyTableModel`中的方法来适应你的数据模型和功能。
阅读全文