如何在 Qt 小部件中获取
Ctrl+Left mouse click
事件。我可以从 QObject::keyPressEvent()
获取按键事件,并从 QObject::mousePressEvent()
获取鼠标单击。但我需要在同一个函数中捕获两者。有人可以指出正确的方向吗?谢谢。
您可以调用QMouseEvent::modifiers()来检查它是否返回值Qt::ControlModifier。
您可以尝试使用附加变量,例如:
private:
bool ctrlIsPressed = false;
protected:
void keyPressEvent(QKeyEvent *event)
{
if( event->key() == Qt::Key_Control )
ctrlIsPressed = true;
}
void keyReleaseEvent(QKeyEvent *event)
{
if( event->key() == Qt::Key_Control )
ctrlIsPressed = false;
}
void mousePressEvent()
{
if( ctrlIsPressed )
// ... Your code
}
查看这个 Stackoverflow.com 问题。我认为这正是您遇到的问题。
使用这个:
void Rect::mousePressEvent(QGraphicsSceneMouseEvent *event){
if(Qt::ControlModifier == QApplication::keyboardModifiers()){
//code
}
}