【问题标题】:Ctrl+Left mouse click event capture QtCtrl+鼠标左键点击事件捕获Qt
【发布时间】:2017-02-15 16:12:20
【问题描述】:

如何在 Qt 小部件中获得 Ctrl+Left mouse click 事件。我可以从QObject::keyPressEvent() 获得关键事件,并从QObject::mousePressEvent() 获得鼠标点击。但我需要在同一个函数中捕获两者。有人可以指出正确的方向。谢谢。

【问题讨论】:

    标签: c++ qt


    【解决方案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】:

      查看这个 Stackoverflow.com 问题。我认为这正是您遇到的问题。

      How to detect the modifier key on mouse click in Qt

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多