pyqt5 tableview 插入行大代码
时间: 2023-08-26 13:04:12 浏览: 189
要在PyQt5的TableView中插入行,你需要使用QAbstractTableModel的insertRows()方法。下面是一个示例代码,展示了如何在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
def insertRows(self, position, rows, parent=QModelIndex()):
self.beginInsertRows(parent, position, position+rows-1)
for _ in range(rows):
self.data.insert(position, [''] * self.columnCount())
self.endInsertRows()
return True
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()
# 插入一行
model.insertRows(1, 1)
app.exec_()
```
在上述代码中,我们在`MyTableModel`类中添加了`insertRows()`方法。在这个方法中,我们使用`beginInsertRows()`和`endInsertRows()`来通知视图有新的行将要被插入。然后,我们在数据列表中插入新的空行。最后,我们在主程序中调用`insertRows()`方法,来插入一行到TableView中。
你可以根据需要修改`insertRows()`方法来适应你的数据模型和功能。
阅读全文