修飾キーが押されている間に QWidget (私の場合は QStatusBar) がダブルクリックされたかどうかを検出するにはどうすればよいですか?
オーバーロードvoid QWidget::mouseDoubleClickEvent ( QMouseEvent * event )
してダブルクリックを取得することはできますが、ウィジェットがフォーカスを持っていない可能性がある場合に、ウィジェットがキー イベントを受け取るかどうかを確認するにはどうすればよいでしょうか?
修飾キーが押されている間に QWidget (私の場合は QStatusBar) がダブルクリックされたかどうかを検出するにはどうすればよいですか?
オーバーロードvoid QWidget::mouseDoubleClickEvent ( QMouseEvent * event )
してダブルクリックを取得することはできますが、ウィジェットがフォーカスを持っていない可能性がある場合に、ウィジェットがキー イベントを受け取るかどうかを確認するにはどうすればよいでしょうか?
私は答えを見つけました:
QMouseEvent
から派生しQInputEvent
、 と呼ばれるメソッドがありmodifiers()
ます。
Qtのドキュメントから:
イベントが発生する直前に存在していたキーボード修飾子フラグを返します。
(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
QWidget に詳細情報を追加するには、このメソッドをオーバーライドするだけです
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
乾杯