Ошибка Qt keyPressEvent

Я написал этот кусок кода, но я получаю эту ошибку:

msgstr "слева от '-> ключ' должен указывать на класс / структуру / объединение / универсальный тип".

Учитывая, что GUI является классом, производным от QWidget класс, как я могу правильно поймать нажатие клавиши?

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

keyPressEvent объявлен так:

protected:    
    virtual void keyPressEvent(QKeyEvent *event);

1 ответ

Решение

Вы должны включить

#include <QKeyEvent>

тогда он должен работать как задумано.


Помимо этого вы должны использовать Q_DECL_OVERRIDE макрос вроде:

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

Как упомянул @KubaOber, если вы используете компилятор C++, поддерживающий>=C++11, либо по умолчанию, либо путем активации его с помощью CONFIG += c++11 тогда вы можете использовать override ключевое слово вместо

Другие вопросы по тегам