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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top