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的主要内容,如果未能解决你的问题,请参考以下文章

Qt4:未捕获 QTableView 鼠标按钮事件

Qt之自定义托盘

C# 怎么让鼠标左键点击3次后触发事件?

鼠标的点击事件&点击的5中状态

jquery鼠标点击事件是啥?

QT学习笔记6