pyqt QListView model 的dataChanged的信号槽示例代码
时间: 2024-05-10 22:18:43 浏览: 249
PyQt5通信机制 信号与槽详解
5星 · 资源好评率100%
下面是一个简单的示例代码,演示了如何使用QListView和QStandardItemModel,以及如何连接dataChanged信号槽:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QListView, QStandardItemModel, QStandardItem
from PyQt5.QtCore import QModelIndex
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个 QListView 和一个 QStandardItemModel
self.list_view = QListView(self)
self.model = QStandardItemModel(self.list_view)
# 向模型中添加一些数据
items = ["item1", "item2", "item3"]
for item in items:
self.model.appendRow(QStandardItem(item))
# 将模型设置为 QListView 的模型
self.list_view.setModel(self.model)
# 连接dataChanged信号槽
self.model.dataChanged.connect(self.on_data_changed)
def on_data_changed(self, topLeft: QModelIndex, bottomRight: QModelIndex):
# 当模型中的数据发生改变时,这个函数将被调用
print("Data changed:", topLeft.row(), topLeft.column(), bottomRight.row(), bottomRight.column())
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个QListView和一个QStandardItemModel,并向模型中添加了一些数据。我们还连接了模型的dataChanged信号槽,当模型中的数据发生改变时,on_data_changed函数将被调用,并打印出哪些位置的数据发生了改变。
阅读全文