复选框在组合框中不可见

2024-09-28 05:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要我的组合框项目可以由用户检查,以便他们可以选择多个项目。我看到了一些关于stackoverflow的解决方案。我把它应用到我的代码中。它做了一些事情,但复选框还不可见,我还不能选择任何项目。在

我的代码如下

from PySide.QtGui import *
from PySide.QtCore import * 

udims = [here goes some items]
cmb = QComboBox()
model = QStandardItemModel(len(udims), 1)
for i, udim in enumerate(udims):
    item = QStandardItem(udim)
    item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
    item.setData(Qt.Checked | Qt.CheckStateRole)
    model.setItem(i, 0, item)

cmb.setModel(model)

Tags: 项目代码用户fromimportmodel解决方案item
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:00

我可以通过为复选框创建一个QItemDelegate子类,然后将其插入到组合框的item委托中,从而实现这一点。在

from PySide.QtCore import *
from PySide.QtGui import *

class CheckBoxDelegate(QItemDelegate):
    def __init__(self, parent=None):
        super(CheckBoxDelegate, self).__init__(parent)

    def createEditor(parent, op, idx):
        self.editor = QCheckBox(parent)


udims = ['1001', '1002', '1003', '1004']
cmb = QComboBox()
delegate = CheckBoxDelegate()
cmb.setItemDelegate(delegate)
model = QStandardItemModel(len(udims), 1)
for i, udim in enumerate(udims):
    item = QStandardItem(udim)
    item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
    item.setData(Qt.Checked | Qt.CheckStateRole)
    model.setItem(i, 0, item)

cmb.setModel(model)

相关问题 更多 >

    热门问题