代码之家  ›  专栏  ›  技术社区  ›  Vicspidy

复选框在组合框内不可见

  •  0
  • Vicspidy  · 技术社区  · 8 年前

    我的代码如下

    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)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Vicspidy    8 年前

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

    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)