Como encontré esta pregunta, cuando traté de encontrar la solución para (básicamente) el mismo problema: En mi caso, quería tener un QComboBox en un QScrollArea en pyside (Python QT lib).
Aquí mi redefinido clase 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)
que es exigible de esta manera:
self.scrollArea = QtGui.QScrollArea(self)
self.frmScroll = QtGui.QFrame(self.scrollArea)
cmbOption = MyQComboBox(self.frmScroll)
Es básicamente emkey08's answer en el link Ralph Tandetzky pointed out, pero esta vez en pitón.
También cambié la política de enfoque del cuadro combinado para hacer clic. Esto ayudó también. ¡Gracias! –
Pero QComboBox TODAVÍA está ENFOCADO si lo controlo. ¿Por qué? ¿Cómo prevenirlo? No quiero deshabilitar el foco, solo centrarme en la rueda. – 18C