QT: Detectar doble clic con modkey (mayúsculas, control, etc.)
-
20-09-2019 - |
Pregunta
¿Cómo puedo detectar si un doble clic sobre un QWidget (QStatusBar, en mi caso), mientras que se produjo una tecla de modificación se llevó a cabo abajo?
Puedo sobrecargar void QWidget::mouseDoubleClickEvent ( QMouseEvent * event )
para obtener el doble clic, pero ¿cómo puedo seguro de si el widget recibe los eventos clave cuando podría no tener el enfoque?
Solución
He encontrado la respuesta:
QMouseEvent
se deriva de QInputEvent
y que tiene un método llamado modifiers()
:
Desde el Qt documentación :
Devuelve las banderas de modificación del teclado que existían inmediatamente antes de producirse el evento.
Otros consejos
Si usted tiene una ranura para su (ratón) o de eventos de señal, puede probar los modificadores existe:
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
Sólo para añadir más información en su QWidget sólo es necesario reemplazar este método
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
aplausos