Qt:使用Modkey检测双击(Shift,CTRL等)

时间:2010-02-12 14:18:13

标签: qt mouseevent qtgui modifier-key

如何在按住修改键时检测是否双击QWidget(在我的情况下为QStatusBar)?

我可以重载void QWidget::mouseDoubleClickEvent ( QMouseEvent * event )以获得双击,但我怎么能确定小部件在可能没有焦点时是否收到关键事件?

3 个答案:

答案 0 :(得分:2)

我找到了答案:

QMouseEvent源自QInputEvent,并且有一个名为modifiers()的方法:

来自Qt documentation

  

返回事件发生前存在的键盘修饰符标记。

答案 1 :(得分:1)

如果您的(鼠标)事件或信号有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 

答案 2 :(得分:0)

只是添加更多信息 在你的QWidget中你只需要覆盖这个方法

protected:
    void mouseDoubleClickEvent(QMouseEvent *event);

欢呼声