Я сделал мульти-выбор QComboBox
. Элементы можно проверить (каждый элемент имеет флажок и текстовое значение). CheckBox проверяется только тогда, когда пользователь нажимает на него. Я хочу, чтобы поймать сигнал, когда пользователь нажимает на текстовое значение, поэтому я могу установить флажок рядом с ним. Как это сделать?Поймать кнопку мыши нажатой кнопкой из всплывающего меню qComboBox
Это, как я установил модель в поле со списком:
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
«s текст всегда отображается как„выбрано“
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
Редактирование eventFilter и установка в основное приложение для просмотра каждого отдельного события. Кажется, что не было никаких событий, отправленных вообще при взаимодействии с comboBox:/ – M4rtini