如何能够检测一个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