Frage

Wie kann ich erkennen, ob ein Doppelklick auf ein QWidget (QStatusBar, in meinem Fall) aufgetreten, während eine Zusatztaste wurde gedrückt gehalten wird?

Ich kann void QWidget::mouseDoubleClickEvent ( QMouseEvent * event ) Überlastung den Doppelklick zu bekommen, aber wie kann ich sicher, ob das Widget die wichtigsten Ereignisse empfängt, wenn es nicht den Fokus haben könnte?

War es hilfreich?

Lösung

fand ich die Antwort:

QMouseEvent aus QInputEvent abgeleitet und die eine Methode aufgerufen modifiers():

Von der Qt Dokumentation :

  

Gibt die Tastatur Modifikator Flags, die sofort existierte, bevor das Ereignis aufgetreten ist.

Andere Tipps

Wenn Sie einen Steckplatz für Ihre (Mouse) Ereignis oder Signal haben, können Sie die Modifikatoren testen es:

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 

Just Weitere Informationen hinzufügen in Ihrem QWidget müssen Sie nur diese Methode außer Kraft setzen

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

cheers

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top