3

修飾キーが押されている間に QWidget (私の場合は QStatusBar) がダブルクリックされたかどうかを検出するにはどうすればよいですか?

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

4

3 に答える 3

2

私は答えを見つけました:

QMouseEventから派生しQInputEvent、 と呼ばれるメソッドがありmodifiers()ます。

Qtのドキュメントから:

イベントが発生する直前に存在していたキーボード修飾子フラグを返します。

于 2010-02-12T14:22:03.860 に答える
1

(Mouse)Event または Signal 用の SLOT がある場合は、そこで修飾子をテストできます。

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 
于 2013-07-28T20:32:41.377 に答える
0

QWidget に詳細情報を追加するには、このメソッドをオーバーライドするだけです

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

乾杯

于 2012-04-12T21:05:37.207 に答える