2010-07-13 41 views
6

Ho alcuni QComboBox incorporati in un QTableView. Per farli mostrare di default ho reso questi indici "editor persistente". Ma ora ogni volta che faccio scorrere un mouse sopra di loro, interrompono la mia attuale selezione di tabelle.Qt Come disabilitare lo scorrimento del mouse su QComboBox?

Quindi, in pratica, come posso disabilitare lo scorrimento del mouse su QComboBox?

risposta

2

Dovresti essere in grado di disabilitare la rotazione della rotellina del mouse installando eventFilter sul tuo QComboBox e ignorare gli eventi generati dalla rotellina del mouse o sottoclasse QComboBox e ridefinire wheelEvent per non fare nulla.

+1

Ho anche modificato il criterio di attivazione della casella combinata per fare clic. Anche questo ha aiutato. Grazie! –

+0

Ma il QComboBox è ANCORA FOCALIZZATO se lo passo. Perché? Come prevenirlo? Non voglio disabilitare la messa a fuoco, ma concentrarsi solo sulla ruota. – 18C

2

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.

+0

Questo ha funzionato per me con un 'QSpinBox' (sostituisci' QtGui.QComboBox' con 'Qwidgets.QSpinBox'), grazie! – ElDog

Problemi correlati