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