c++ - Qt keyPressEvent 错误

标签 c++ qt keypress qwidget qkeyevent

我写了这段代码,但是我得到了这个错误:

"left of '->key' must point to class/struct/union/generic type".

考虑到 GUI 是从 QWidget 类派生的类,我如何才能正确地捕捉到按键的按下?

void GUI::keyPressEvent(QKeyEvent *event)
{
    if (event->key()==Qt::Key_Up) {
        //do something
    }
}

keyPressEvent 声明如下:

protected:    
    virtual void keyPressEvent(QKeyEvent *event);

最佳答案

你必须包括

#include <QKeyEvent>

然后它应该按预期工作。


除此之外,您应该使用 Q_DECL_OVERRIDE宏如:

protected:    
    virtual void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;

正如@KubaOber 提到的,如果您使用默认支持 >=C++11 的 C++ 编译器,或者您使用 CONFIG += c++11 激活它,那么你可以使用 override改为关键字。

关于c++ - Qt keyPressEvent 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878321/

相关文章:

c++ - OpenCV 错误 : Assertion failed (src1. size == dst.size && dst.type() == CV_8U) in cvInRangeS

qt - ColumnLayout 中文本元素上方和下方的空白空间

javascript - Node js 捕获键盘按下和鼠标移动(不在 Web 浏览器上)

c# - 模拟输入 : key pressed, 保持和释放

c++ - 如何在纯 C/C++ (cout/printf) 中显示进度指示器?

c++ - AC_TRY_LINK : Could not link "libssh2"

c++ - 我应该使用 C 或 C++ 实现来返回变量类型的最大大小吗?

python - QComboBox 忽略键盘输入

c++ - 运行 QT Creator 时 OpenGL 的问题

javascript - 当您想在按住按键但只播放一次的 JavaScript 中使用它们时,如何避免重复的按键消息?