2016-05-18 39 views
1

我试图使QComboBox与可检查的项目。我创建了一个自定义模型,我的QComboBox对象使用(通过setModel()方法)。PyQt:可检查项目的QComboBox:不显示复选框

我试图用这个问题提出的解决方案:https://stackoverflow.com/a/8423904

这里是我的自定义模式:

class FilterModel(QStandardItemModel): 

    def __init__(self, filter_list, parent=None): 
     super(FilterModel, self).__init__(parent) 

     for index, filter in enumerate(filter_list): 
      item = QStandardItem(filter) 
      item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) 
      item.setData(Qt.Unchecked, Qt.CheckStateRole) 

      self.setItem(index, 0, item) 

我通过的项目,如在构造函数列表时,我实例化我的模型。

但是,我的项目也是可选的,也不可检查(复选框甚至不显示)。

+0

是的,正如我的问题所说,这是我用来实现这一点的答案。我复制/粘贴他的代码,将它从C++转换为Python,但是在这里,它不起作用(项目不可选,也不可检查)。 – Klmnop

回答

0

我不知道为什么复选框不显示,但要选择的项目,您还需要包含Qt.ItemIsSelectable标志。

无论如何,你为什么不尝试QStandardItem.setCheckable方法?像这样:

class FilterModel(QStandardItemModel): 

    def __init__(self, filter_list, parent=None): 
     super(FilterModel, self).__init__(parent) 

     for index, filter in enumerate(filter_list): 
      item = QStandardItem(filter) 
      item.setSelectable(True) 
      item.setCheckable(True) 
      item.setCheckState(Qt.Unchecked) 
      self.setItem(index, 0, item)