pyqt QlistVIew的model的文本发生变化时的信号槽
时间: 2024-05-12 22:13:14 浏览: 11
当`QListView`的`model`中的数据发生改变时,会发出`dataChanged()`信号。你可以将这个信号连接到一个槽函数中,这样当数据改变时就会自动调用这个槽函数。
以下是一个示例代码,演示如何使用`dataChanged()`信号:
```python
from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListView
class MyListModel(QAbstractListModel):
def __init__(self, data=None):
super().__init__()
self._data = data or []
def rowCount(self, parent=None):
return len(self._data)
def data(self, index, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
return self._data[index.row()]
def setData(self, index, value, role=Qt.EditRole):
if role == Qt.EditRole:
self._data[index.row()] = value
self.dataChanged.emit(index, index, [role])
return True
return False
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.list_view = QListView()
self.model = MyListModel(["Item 1", "Item 2", "Item 3"])
self.list_view.setModel(self.model)
self.list_view.model().dataChanged.connect(self.on_data_changed)
layout = QVBoxLayout()
layout.addWidget(self.list_view)
self.setLayout(layout)
def on_data_changed(self, index_start, index_end):
print("Data changed:", index_start.row(), index_end.row())
if __name__ == '__main__':
app = QApplication([])
w = MyWidget()
w.show()
app.exec_()
```
在这个示例代码中,我们创建了一个继承自`QAbstractListModel`的`MyListModel`,并将其设置为`QListView`的`model`。然后我们连接了`dataChanged()`信号到`on_data_changed()`槽函数中,在数据改变时打印出改变的行数。`setData()`方法中调用`dataChanged.emit()`,以便在数据改变时发出信号。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)