pyqt QListView 添加QStandardItem
时间: 2024-06-10 14:07:04 浏览: 14
回答:可以通过以下代码实现:
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QWidget, QListView, QVBoxLayout
app = QApplication([])
widget = QWidget()
model = QStandardItemModel()
list_view = QListView()
list_view.setModel(model)
for text in ['item1', 'item2', 'item3']:
item = QStandardItem(text)
model.appendRow(item)
layout = QVBoxLayout()
layout.addWidget(list_view)
widget.setLayout(layout)
widget.show()
app.exec_()
```
以上代码会创建一个包含三个item的ListView界面。
相关问题
pyqt QlistView的单击事件
在PyQt中,可以使用QListView控件来显示一个列表,并且可以响应单击事件。为此,需要将QListView的clicked信号连接到一个槽函数上。
下面是一个示例代码,演示了如何在QListView控件中实现单击事件:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QListView
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import QModelIndex
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.listview = QListView(self)
self.listview.clicked.connect(self.on_listview_clicked)
vbox = QVBoxLayout()
vbox.addWidget(self.listview)
self.setLayout(vbox)
# 设置模型
model = QStandardItemModel()
for i in range(10):
item = QStandardItem(f"Item {i}")
model.appendRow(item)
self.listview.setModel(model)
def on_listview_clicked(self, index: QModelIndex):
item = self.listview.model().itemFromIndex(index)
print(f"Clicked: {item.text()}")
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个示例代码中,我们首先创建了一个QListView控件,并将其clicked信号连接到了on_listview_clicked()槽函数上。然后我们通过QStandardItemModel来设置了控件的模型,并添加了10个Item。最后,当用户点击列表中的任意一项时,程序会自动调用on_listview_clicked()函数,并打印出该项的文本内容。
pyqt QListView的IconMode下图标大小一致
想要在QListView的IconMode下设置图标大小一致,可以通过设置QListView的iconSize属性来实现。以下是示例代码:
```python
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication, QListView, QWidget, QHBoxLayout
app = QApplication([])
widget = QWidget()
layout = QHBoxLayout(widget)
listview = QListView()
# 设置图标大小
icon_size = 64
listview.setIconSize(QSize(icon_size, icon_size))
# 添加图标
pixmap = QPixmap('icon.png')
icon1 = QIcon(pixmap)
icon2 = QIcon(pixmap.scaledToWidth(icon_size // 2))
icon3 = QIcon(pixmap.scaledToWidth(icon_size // 4))
icons = [icon1, icon2, icon3]
# 设置模型
model = QStandardItemModel()
for i in range(10):
item = QStandardItem()
item.setIcon(icons[i % 3])
model.appendRow(item)
listview.setModel(model)
layout.addWidget(listview)
widget.show()
app.exec_()
```
在这个例子中,我们通过设置QListView的iconSize属性为64x64来使得所有图标大小一致。通过添加不同大小的图标来演示图标大小的效果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)