Переопределение QWidget keyPressEventC++

Программы на C++. Форум разработчиков
Anonymous
Переопределение QWidget keyPressEvent

Сообщение Anonymous »

Я уже полвечности пытаюсь переопределить функцию QWidget keyPressEvent в Qt, но это просто не сработает. Должен сказать, что я новичок в CPP, но знаю ObjC и стандарт C.
Моя проблема выглядит так:

Код: Выделить всё

class QSGameBoard : public QWidget {
Q_OBJECT

public:
QSGameBoard(QWidget *p, int w, int h, QGraphicsScene *s);

signals:
void keyCaught(QKeyEvent *e);

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

Код: Выделить всё

QSGameBoard
— это мой подкласс QWidget, и мне нужно переопределить keyPressEvent и запустить СИГНАЛ для каждого события, чтобы уведомить некоторые зарегистрированные объекты.
Мой переопределенный keyPressEvent в QSGameBoard.cpp выглядит следующим образом:

Код: Выделить всё

void QSGameBoard::keyPressEvent(QKeyEvent *event) {
printf("\nkey event in board: %i", event->key());
//emit keyCaught(event);
}
Когда я меняю QSGameBoard:: на QWidget::, он получает события, но я не могу передать сигнал, потому что компилятор жалуется на область видимости. А если я напишу вот так, функция вообще не будет вызываться.
В чем здесь проблема?

Подробнее здесь: https://stackoverflow.com/questions/273 ... t-override

Вернуться в «C++»