Вы путаетесь между двумя разными вещами.
У вас есть class Player
, который, как я считаю, вы хотите объявить в mainwindow.h
, но объект class Player
не созданв любом месте (насколько показано выше).
player
, объявленный в настоящее время в mainwindow.h
, относится к типу QGraphicsItem
, а не к классу Player
, который вы создали, поэтому вы не можете ожидатьваш keyPressEvent
, чтобы работать над ним.
Вам нужно еще раз взглянуть на свой дизайн, знать цель класса Player
, его обязанности.В настоящее время это простой класс, не наследующий от чего-либо, вы хотите, чтобы он наследовал от QGraphicsItem
.
В таком случае ваш класс может выглядеть примерно так:
class Player : public QGraphicsItem
{
//Players's responsibilities.
}
А в вашем mainwindow.h
вы можете просто использовать экземпляр Player
вместо использованияQGraphicsItem
экземпляр.
class MainWindow : public QMainWindow
{
...// other stuff
private:
Player *player;
}
Дополнительные указатели:
1.Я не вижу причин для того, чтобы класс Player
был классом friend
в mainwindow.h
, но опять же это ваш дизайн.
2.Предпочитайте инициализацию части объекта player
в списке инициализации члена, а не делать это в конструкторе.