Qtの:Modkey(Shiftキー、Ctrlキーなど)をダブルクリックして検出]
-
20-09-2019 - |
質問
はどのように修飾キーが押された間のQWidgetをダブルクリック(QStatusBarが、私の場合は)発生したかどうかを検出することができますか?
私は、ダブルクリックを得るためにvoid QWidget::mouseDoubleClickEvent ( QMouseEvent * event )
をオーバーロードすることができますが、どのようにすることができます私はそれがフォーカスを持っていない可能性がある場合、ウィジェットがキーイベントを受け取るかどうかを確認?
解決
私は答えを見つけます:
QMouseEvent
はQInputEvent
由来し、それは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);
歓声
所属していません StackOverflow