Question

Comment puis-je détecter si un double-clic sur un QWidget (QStatusBar, dans mon cas) est survenue alors qu'une touche de modification a été maintenue enfoncée?

Je peux surcharger void QWidget::mouseDoubleClickEvent ( QMouseEvent * event ) pour obtenir le double-clic, mais comment puis-je sûr que le widget reçoit les événements clés quand il pourrait ne pas avoir le focus?

Était-ce utile?

La solution

J'ai trouvé la réponse:

QMouseEvent est dérivé de la QInputEvent et qui a une méthode appelée modifiers():

De la documentation Qt :

  

Renvoie les indicateurs de modification du clavier qui existaient immédiatement avant l'événement.

Autres conseils

Si vous avez un SLOT pour votre (Souris) événement ou signal, vous pouvez tester les modificateurs il:

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 

Il suffit d'ajouter plus d'informations dans votre QWidget il vous suffit de remplacer cette méthode

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

hourras

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top