Переопределение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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