Come ho trovato questa domanda, quando ho cercato di capire la soluzione (fondamentalmente) lo stesso problema: Nel mio caso volevo avere un QComboBox in un QScrollArea in campagna (python QT lib).
Qui il mio ridefinito classe QComboBox:
#this combo box scrolls only if opend before.
#if the mouse is over the combobox and the mousewheel is turned,
# the mousewheel event of the scrollWidget is triggered
class MyQComboBox(QtGui.QComboBox):
def __init__(self, scrollWidget=None, *args, **kwargs):
super(MyQComboBox, self).__init__(*args, **kwargs)
self.scrollWidget=scrollWidget
self.setFocusPolicy(QtCore.Qt.StrongFocus)
def wheelEvent(self, *args, **kwargs):
if self.hasFocus():
return QtGui.QComboBox.wheelEvent(self, *args, **kwargs)
else:
return self.scrollWidget.wheelEvent(*args, **kwargs)
che è richiamabile in questo modo:
self.scrollArea = QtGui.QScrollArea(self)
self.frmScroll = QtGui.QFrame(self.scrollArea)
cmbOption = MyQComboBox(self.frmScroll)
E 'fondamentalmente emkey08's answer nel link Ralph Tandetzky pointed out, ma questa volta in pitone.
fonte
2017-04-18 08:33:17
Ho anche modificato il criterio di attivazione della casella combinata per fare clic. Anche questo ha aiutato. Grazie! –
Ma il QComboBox è ANCORA FOCALIZZATO se lo passo. Perché? Come prevenirlo? Non voglio disabilitare la messa a fuoco, ma concentrarsi solo sulla ruota. – 18C