Qt: Rileva doppio clic con modkey (Shift, Ctrl, ecc)
-
20-09-2019 - |
Domanda
Come faccio a rilevare se un doppio clic su un QWidget (QStatusBar, nel mio caso) ha accaduto mentre un tasto di modifica è stato tenuto premuto?
posso sovraccaricare void QWidget::mouseDoubleClickEvent ( QMouseEvent * event )
per ottenere il doppio click, ma come posso con certezza se il widget riceve gli eventi chiave quando si potrebbe non avere l'attenzione?
Soluzione
Ho trovato la risposta:
QMouseEvent
è derivato da QInputEvent
e che ha un metodo chiamato modifiers()
:
Restituisce i flag di modifica della tastiera che esistevano immediatamente prima si è verificato l'evento.
Altri suggerimenti
Se si dispone di uno slot per la vostra (Mouse) della corsa o del segnale, è possibile testare i modificatori c'è:
Qt::KeyboardModifiers modifiers = QApplication::queryKeyboardModifiers ();
if(modifiers.testFlag( Qt::ControlModifier )){
qDebug() << "CTRL was hold when this function was called";
}
else{
qDebug() << "CTRL wasn't hold";
}
//SHIFT = Qt::ShiftModifier
//CTRL = Qt::ControlModifier
//ALT = Qt::AltModifier
Giusto per aggiungere più informazioni nel vostro QWidget avete solo bisogno di eseguire l'override di questo metodo
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
applausi