如何检测QWidget(QStatusBar,在我的情况下)是否在修改键被按下时发生双击?Qt:使用Modkey检测双击(Shift,CTRL等)
我可以重载void QWidget::mouseDoubleClickEvent (QMouseEvent * event)
来获得双击,但我怎么能确定当它可能没有焦点时,小部件是否接收到关键事件?
如何检测QWidget(QStatusBar,在我的情况下)是否在修改键被按下时发生双击?Qt:使用Modkey检测双击(Shift,CTRL等)
我可以重载void QWidget::mouseDoubleClickEvent (QMouseEvent * event)
来获得双击,但我怎么能确定当它可能没有焦点时,小部件是否接收到关键事件?
只需添加更多的信息 在QWidget中,你只需要如果您对您的(鼠标)事件或信号,可以将SLOT重写此方法
protected:
void mouseDoubleClickEvent(QMouseEvent *event);
欢呼
测试那里的修饰语:
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
你真的测试过这种方法吗,Qt Doc指出这些并不是100%可信的。 – drahnr 2010-02-12 18:20:35
是的,我有一个事件过滤器安装在'QWidget'上,该事件过滤器将事件转换为'QMouseEvent *'并测试两个修饰键以防事件类型为'QEvent :: MouseButtonDblClick。奇迹般有效... – fawick 2010-02-15 10:50:09