Ctrl+鼠标左键点击事件捕获Qt
Posted
技术标签:
【中文标题】Ctrl+鼠标左键点击事件捕获Qt【英文标题】:Ctrl+Left mouse click event capture Qt 【发布时间】:2017-02-15 16:12:20 【问题描述】:如何在 Qt 小部件中获得 Ctrl+Left mouse click
事件。我可以从QObject::keyPressEvent()
获得关键事件,并从QObject::mousePressEvent()
获得鼠标点击。但我需要在同一个函数中捕获两者。有人可以指出正确的方向。谢谢。
【问题讨论】:
【参考方案1】:您可以尝试使用附加变量,例如:
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
【讨论】:
其实我想避免这种情况,但可以这样做。谢谢。【参考方案2】:可以调用QMouseEvent::modifiers()查看是否返回值Qt::ControlModifier。
【讨论】:
【参考方案3】:查看这个 ***.com 问题。我认为这正是您遇到的问题。
How to detect the modifier key on mouse click in Qt
【讨论】:
以上是关于Ctrl+鼠标左键点击事件捕获Qt的主要内容,如果未能解决你的问题,请参考以下文章