使用 QListView 和 QStandardItemModel多选例子
时间: 2023-07-21 18:59:16 浏览: 54
以下是使用 QListView 和 QStandardItemModel 实现 QComboBox 多选的示例代码:
```python
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QComboBox, QListView, QStandardItem, QStandardItemModel
class MultiSelectComboBox(QComboBox):
def __init__(self, parent=None):
super(MultiSelectComboBox, self).__init__(parent)
self.setView(QListView()) # 设置下拉视图为 QListView
self.model = QStandardItemModel()
self.setModel(self.model) # 设置模型为 QStandardItemModel
self.setInsertPolicy(QComboBox.NoInsert) # 禁止用户手动输入
def addItem(self, text, checked=False):
item = QStandardItem(text)
item.setCheckable(True)
item.setCheckState(Qt.Checked if checked else Qt.Unchecked)
self.model.appendRow(item)
def checkedItems(self):
checked_items = []
for row in range(self.model.rowCount()):
item = self.model.item(row)
if item.checkState() == Qt.Checked:
checked_items.append(item.text())
return checked_items
if __name__ == '__main__':
app = QApplication(sys.argv)
combo = MultiSelectComboBox()
combo.addItem("Option 1", True)
combo.addItem("Option 2")
combo.addItem("Option 3")
combo.show()
sys.exit(app.exec_())
```
在上述代码中,我们创建了一个名为 `MultiSelectComboBox` 的自定义多选下拉框类。在该类中,我们使用了 `QListView` 作为下拉视图,并使用 `QStandardItemModel` 作为模型。通过 `addItem` 方法,我们可以添加多个项,并指定是否默认选中。通过 `checkedItems` 方法,我们可以获取当前选中的项。运行上述代码,你将看到一个具有多选功能的下拉框,并且可以选择多个选项。