从qComboBox弹出菜单中捕获鼠标按钮按下的信号

2024-03-28 23:02:37 发布

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

我做了多次选择。项目是可选中的(每个项目都有复选框和文本值)。只有当用户单击复选框时才会选中它。我想要的是在用户点击文本值时捕捉信号,这样我就可以选中它旁边的复选框。怎么做?

enter image description here

这就是我如何将模型设置为组合框:

areas = ["Area one", "Area two", "Area three", "Area four"]
model = QtGui.QStandardItemModel(5, 1)# 5 rows, 1 col

firstItem = QtGui.QStandardItem("---- Select area(s) ----")
firstItem.setBackground(QtGui.QBrush(QtGui.QColor(200, 200, 200)))
firstItem.setSelectable(False)
model.setItem(0, 0, firstItem)

for i,area in enumerate(areas):
    item = QtGui.QStandardItem(area)
    item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
    item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
    model.setItem(i+1, 0, item)

self.ui.comboBox.setModel(model)        
self.ui.comboBox.installEventFilter(self)

我已将事件筛选器添加到阻止控制盘事件,因此firstItem的文本始终显示为“选定”

def eventFilter(self,target,event):
    if target == self.ui.comboBox:
        if(event.type()== QtCore.QEvent.Wheel):
            #wheel event is blocked here
            return True
    return False

Tags: 项目文本selfeventuimodelareaitem