Qt keyPressEvent

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt keyPressEvent相关的知识,希望对你有一定的参考价值。

keyPressEvent是QWidget里面的函数,所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应。

要让当前的widget能够响应按键事件,最先需要做的事情是,调用:

setFocusPolicy(Qt::StrongFocus);

接下来就是keyPressEvent方法的声明与实现了~

// 声明
void keyPressEvent(QKeyEvent *event);
// 实现
void DisplayGLWidget::keyPressEvent(QKeyEvent* event)
{    
    switch (event->key())
    {
    case Qt::Key_Up:
        mix = (mix + 0.1) > 1 ? 1 : mix + 0.1;
        std::cout << "mix = " << mix << endl;
        updateGL();
        break;
    case Qt::Key_Down:
        mix = (mix - 0.1) < 0 ? 0 : mix - 0.1;
        std::cout << "mix = " << mix << endl;
        updateGL();
        break;
    default:
        break;
    }
}

需要注意的是,响应按键事件后,需要updateGL,否则当前窗口不会自动重新绘制。

 

以上是关于Qt keyPressEvent的主要内容,如果未能解决你的问题,请参考以下文章

qt按键 keypressevent

qt keyPressEvent函数方向键没有响应键盘事件的解决方法

qt keyPressEvent函数方向键没有响应键盘事件的解决方法

PyQt5 keyPressEvent 不适用于终止 App Qt Designer

Qt 中响应回车事件 keyPressEvent

Qt keyPressEvent、“Hold”和keyReleaseEvent处理按钮/鼠标点击