Ошибка keyPressedEvent Qt при реализации функции

Я получаю сообщение об ошибке в программе QT, где я пытаюсь захватить нажатия клавиш. В функции keyPressedEvent в моей программе qt, но я получаю странную ошибку:

frenzywindow.cpp:16:50: error: no 'void FrenzyWindow::keyPressEvent(QKeyEvent*)' member function declared in class 'FrenzyWindow'
make: *** [frenzywindow.o] Error 1

Класс расширяет qmainwindow

вот мой заголовочный файл:

#ifndef FRENZYWINDOW_H
#define FRENZYWINDOW_H

#include <QMainWindow>
#include "frenzy.h"
namespace Ui {
class FrenzyWindow;
}

class FrenzyWindow : public QMainWindow
{
Q_OBJECT

public:
explicit FrenzyWindow(QWidget *parent = 0);
~FrenzyWindow();

signals:
void moveUp();
void moveDown();
void moveLeft();
void moveRight();private:
Ui::FrenzyWindow *ui;
Frenzy f;
};

#endif // FRENZYWINDOW_H

вот мой файл cpp:

#include "frenzywindow.h"#include "ui_frenzywindow.h"
FrenzyWindow::FrenzyWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::FrenzyWindow)
{
ui->setupUi(this);
}

FrenzyWindow::~FrenzyWindow()
{
delete ui;
}

void FrenzyWindow::keyPressEvent(QKeyEvent *event)
{

switch(event->key())
{
case Qt::UpArrow:
emit moveUp();
break;
case Qt::DownArrow:
emit moveDown();
break;
case Qt::LeftArrow:
emit moveLeft();
break;
case Qt::RightArrow:
emit moveRight();
break;
default:
event->ignore();
break;

}
}

0

Решение

Вы прочитали ошибку компилятора? Именно в этом и заключается проблема. Вам нужно определить keyPressEvent в вашем заголовочном файле.

protected:
void keyPressEvent(QKeyEvent *event);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]