質問

はどのように修飾キーが押された間のQWidgetをダブルクリック(QStatusBarが、私の場合は)発生したかどうかを検出することができますか?

私は、ダブルクリックを得るためにvoid QWidget::mouseDoubleClickEvent ( QMouseEvent * event )をオーバーロードすることができますが、どのようにすることができます私はそれがフォーカスを持っていない可能性がある場合、ウィジェットがキーイベントを受け取るかどうかを確認?

役に立ちましたか?

解決

私は答えを見つけます:

QMouseEventQInputEvent由来し、それはmodifiers()と呼ばれるメソッドを持っています:

Qtのドキュメントするます:

  

イベントが発生する直前に存在していたキーボードモディファイアフラグを返します。

他のヒント

あなたは(マウス)イベントや信号用のスロットを持っている場合は、あなたがそこに修飾子をテストすることができます:

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 

ちょうどより多くの情報を追加します あなたのQWidgetの中であなただけのこのメソッドをオーバーライドする必要があります。

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

歓声

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top