【发布时间】:2017-02-15 16:12:20
【问题描述】:
如何在 Qt 小部件中获得 Ctrl+Left mouse click 事件。我可以从QObject::keyPressEvent() 获得关键事件,并从QObject::mousePressEvent() 获得鼠标点击。但我需要在同一个函数中捕获两者。有人可以指出正确的方向。谢谢。
【问题讨论】:
如何在 Qt 小部件中获得 Ctrl+Left mouse click 事件。我可以从QObject::keyPressEvent() 获得关键事件,并从QObject::mousePressEvent() 获得鼠标点击。但我需要在同一个函数中捕获两者。有人可以指出正确的方向。谢谢。
【问题讨论】:
您可以尝试使用附加变量,例如:
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
}
【讨论】:
可以调用QMouseEvent::modifiers()查看是否返回值Qt::ControlModifier。
【讨论】:
查看这个 Stackoverflow.com 问题。我认为这正是您遇到的问题。
【讨论】: