У меня есть символ, добавленный через QgraphicsPixmapitem, и теперь я хочу переместить его, нажав клавиши со стрелками на клавиатуре. Но я не могу найти способ. Он дает ошибка компиляции. Помоги мне, пожалуйста!Переместить QGraphicsPixmapItem через клавиатуру
moveship.h (заголовочный файл для моего QPixmapItem)
#ifndef MOVESHIP_H
#define MOVESHIP_H
#include <QGraphicsPixmapItem>
class moveship: public QGraphicsPixmapItem
{
public:
void keyPressEvent(QKeyEvent *event);
};
#endif // MOVESHIP_H
Я просто проверить, если он признает любую клавишу нажать или нет.
Реализация keyPressEvent:
#include "moveship.h"
#include <QDebug>
void moveship::keyPressEvent(QKeyEvent *event)
{
qDebug() << "moved";
}
Мой главный исходный файл:
#include<QApplication>
#include<QGraphicsScene>
#include<QGraphicsView>
#include<QGraphicsPixmapItem>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene * scene = new QGraphicsScene();
QGraphicsView * view = new QGraphicsView(scene);
QPixmap q = QPixmap("://images/player.png");
if(q.isNull())
{
printf("null\n");
}
else
{
moveship * player = new moveship(q);
scene->addItem(player);
}
view->resize(500,500);
view->show();
return a.exec();
}
Пожалуйста, помогите :(
Edit:
ошибка компиляции, которые я получаю:
error: no matching function for call to 'moveship::moveship(QPixmap&)'
moveship * player = new moveship(q);
Какая ошибка компиляции? Что такое 'qDebug()' output? – dazewell
@dazewell: Ошибка компиляции: "ошибка: нет функции соответствия для вызова 'moveship :: moveship (QPixmap &)' moveship * игрок = новый moveship (д); ^" –
вы Шоуда обновили ваш вопрос с этим уведомлением, потому что он меняет весь вопрос. Разве вы не видите, что компилятор говорит вам? Проверьте подпись своего конструктора 'movehip'. Вы его не показывали или вообще не существует? – dazewell