如何檢測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