2010-07-13 16 views
6

Tengo QComboBox incorporado en un QTableView. Para hacer que se muestren de forma predeterminada hice esos índices como "editor persistente". Pero ahora, cada vez que hago un desplazamiento del mouse sobre ellos, rompen mi selección de tabla actual.Qt ¿Cómo deshabilitar el desplazamiento del mouse de QComboBox?

Entonces, básicamente, ¿cómo puedo deshabilitar el desplazamiento del mouse de QComboBox?

Respuesta

2

Usted debe ser capaz de desactivar la rueda de desplazamiento del ratón mediante la instalación de eventFilter en su QComboBox e ignorar los eventos generados por la rueda del ratón, o QComboBox subclase y redefinir wheelEvent no hacer nada.

+1

También cambié la política de enfoque del cuadro combinado para hacer clic. Esto ayudó también. ¡Gracias! –

+0

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

2

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.

+0

Esto funcionó para mí con un 'QSpinBox' (reemplace' QtGui.QComboBox' con 'Qwidgets.QSpinBox'), ¡gracias! – ElDog

Cuestiones relacionadas