pyqt5 qlistview和qlistwidget
时间: 2023-09-05 09:12:48 浏览: 60
PyQt5中的QListView和QListWidget都可以用于显示列表数据,但它们的实现方式略有不同。
QListView是一个更基本的控件,它提供了一种用于显示一维数据的方式。你可以通过设置模型(QAbstractItemModel)来为QListView提供数据。QListView默认情况下只显示一列数据,但你可以通过设置QListView的布局来显示多列数据。
QListWidget是基于QListView的,它提供了更高级的功能,例如自动排序和拖放。与QListView不同,QListWidget本身就是一个数据模型,它可以直接添加和删除项目,而不需要设置一个单独的模型。QListWidget还提供了一些方便的方法来操作项目,例如选中、滚动到指定项目等。
如果你只是需要显示简单的一维数据列表,那么使用QListView会更加简单和灵活;如果你需要更高级的功能,例如拖放和自动排序,那么使用QListWidget可能会更加方便。
相关问题
pyqt 捕捉QlistView的EditTriggers,当edittriggers完成时触发信号槽
可以使用`QListView.editTriggersChanged`信号来捕捉`EditTriggers`完成时的信号槽。
以下是示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QListView, QListWidget, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建列表视图和列表控件
self.list_view = QListView(self)
self.list_widget = QListWidget(self)
self.list_widget.addItems(["Item 1", "Item 2", "Item 3"])
# 设置列表视图的编辑触发器为双击
self.list_view.setEditTriggers(QListView.DoubleClicked)
# 布局
central_widget = QWidget()
layout = QVBoxLayout(central_widget)
layout.addWidget(self.list_view)
layout.addWidget(self.list_widget)
self.setCentralWidget(central_widget)
# 绑定信号槽
self.list_view.editTriggersChanged.connect(self.on_edit_triggers_changed)
def on_edit_triggers_changed(self, edit_triggers):
# 当编辑触发器变化时会被调用
print(edit_triggers)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
当你双击列表项时,`on_edit_triggers_changed`函数会被调用,并且会打印出`QAbstractItemView.DoubleClicked`。这是因为我们在代码中设置了列表视图的编辑触发器为`QListView.DoubleClicked`。你可以根据需要在`on_edit_triggers_changed`函数中添加自己的逻辑。
pyqt QListView 添加Item
可以使用以下代码向 QListView 中添加 item:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QListView, QListWidget, QListWidgetItem
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建 QListView
list_view = QListView(self)
# 添加 item
items = ['Item 1', 'Item 2', 'Item 3']
list_model = QListWidget()
for item in items:
list_model.addItem(QListWidgetItem(item))
list_view.setModel(list_model)
# 设置窗口属性
self.setWindowTitle('QListView添加Item')
self.setGeometry(300, 300, 200, 150)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
```
你可以参考以上代码将自己的 item 添加到 QListView 中。
相关推荐
![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_column_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)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)