不要点击触发,要编辑完成后触发
时间: 2023-08-18 15:07:14 浏览: 67
非常抱歉,我的回答还是不够准确。在PyQt中获取用户在TableView上编辑完成后的数据,可以使用`QStandardItemModel.dataChanged()`信号,该信号在数据修改完成后会被触发。下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTableView, QStandardItemModel
from PyQt5.QtCore import Qt
app = QApplication([])
model = QStandardItemModel(4, 2)
model.setHorizontalHeaderLabels(['Name', 'Age'])
view = QTableView()
view.setModel(model)
# 数据修改完成后触发的槽函数
def on_data_changed(top_left, bottom_right):
for row in range(top_left.row(), bottom_right.row()+1):
for col in range(top_left.column(), bottom_right.column()+1):
index = model.index(row, col)
print(f'{model.headerData(col, Qt.Horizontal, Qt.DisplayRole).value()}: {model.data(index, Qt.DisplayRole)}')
# 连接数据修改信号和槽函数
model.dataChanged.connect(on_data_changed)
# 设置数据
model.setData(model.index(0, 0), 'Alice')
model.setData(model.index(0, 1), '25')
model.setData(model.index(1, 0), 'Bob')
model.setData(model.index(1, 1), '30')
view.show()
app.exec_()
```
在这个示例中,我们创建了一个4行2列的数据模型,并将其设置为TableView的模型。我们连接了`QStandardItemModel.dataChanged()`信号和一个槽函数`on_data_changed()`,当用户编辑完成数据后,该槽函数将被触发。在槽函数中,我们使用`for`循环遍历所有发生改变的单元格,并打印出它们的列名和修改后的值。最后,我们设置了一些示例数据并显示TableView。
当用户在TableView上编辑完成数据后,槽函数将被触发,并执行我们预先定义好的操作。
阅读全文