Я получаю сообщение об ошибке в программе 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;
}
}
Вы прочитали ошибку компилятора? Именно в этом и заключается проблема. Вам нужно определить keyPressEvent
в вашем заголовочном файле.
protected:
void keyPressEvent(QKeyEvent *event);
Других решений пока нет …