可以通过以下步骤实现:
以下是一个示例代码:
import sys
from PyQt5.QtWidgets import QApplication, QComboBox, QTreeView, QStyledItemDelegate, QStyleOptionViewItem
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import Qt
class TreeDelegate(QStyledItemDelegate):
def paint(self, painter, option, index):
if index.model().hasChildren(index):
# 获取项的文本和图标
text = index.model().data(index, Qt.DisplayRole)
icon = index.model().data(index, Qt.DecorationRole)
# 设置委托的显示方式
option.text = text
option.icon = icon
# 绘制项
QStyledItemDelegate.paint(self, painter, option, index)
else:
# 调用默认的委托绘制方式
QStyledItemDelegate.paint(self, painter, option, index)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建树模型
model = QStandardItemModel()
root_item = model.invisibleRootItem()
parent_item = QStandardItem("Parent Item")
child_item1 = QStandardItem("Child Item 1")
child_item2 = QStandardItem("Child Item 2")
parent_item.appendRow(child_item1)
parent_item.appendRow(child_item2)
root_item.appendRow(parent_item)
# 创建QComboBox实例
combo_box = QComboBox()
tree_view = QTreeView()
# 设置树模型作为QTreeView的数据源
tree_view.setModel(model)
# 将QTreeView设置为QComboBox的下拉视图
combo_box.setView(tree_view)
# 设置自定义委托
delegate = TreeDelegate(combo_box)
combo_box.setItemDelegate(delegate)
combo_box.show()
sys.exit(app.exec_())
这段示例代码演示了如何在QComboBox中显示树模型的分支。创建一个QComboBox实例,将QTreeView设置为其下拉视图,并使用自定义委托来绘制树模型的分支项。树模型使用QStandardItemModel创建,并添加了一个父项和两个子项。运行代码后,可以点击下拉箭头查看树模型的分支项。
领取专属 10元无门槛券
手把手带您无忧上云