Самый простой способ оживить QGraphicsPixmapItem?

Я хочу оживить QGraphicsPixmapItem в моем QGraphicsScene, с QPropertyAnimation,

QPixmap pixmap(filePath);
QGraphicsItem *pixmapItem = graphicsScene->addPixmap(pixmap);

QPropertyAnimation animation(pixmapItem, "x"); // here lies the problem
animation.setDuration(30000);
// ...
animation.start();

Я проверил документ, так что я уже знаю, что QGraphicsPixmapItem и его родитель QGraphicsItem являются не QObjectи что QPropertyAnimation конструктор с QGraphicsItem не существует. Согласно различным источникам, лучший способ — создать новый класс, например, AnimatedGraphicsItem который наследует от QObject а также QGraphicsItem ИЛИ я могу просто наследовать от QGraphicsObject,

class AnimatedGraphicsItem : public QObject, public QGraphicsItem // or public QGraphicsObject
{
Q_OBJECT
Q_INTERFACES(QGraphicsItem) // not needed if I inherit from QGraphicsObject, right?
};

Что мне нужно включить точно в заголовок и исходные файлы моего AnimatedGraphicsItem учебный класс? Один источник сказал мне, чтобы включить это в заголовочный файл тоже, но я подумал, это уже унаследовано?

public:
AnimatedGraphicsItem(QGraphicsItem *parent = 0);

private:
virtual QRectF boundingRect() const;
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

И как я должен использовать мой AnimatedGraphicsItem учебный класс?

Должен ли я бросить свой QGraphicsItem *pixmapItem в AnimatedGraphicsItem? (Если да, то как?) Должен ли я создать новый экземпляр AnimatedGraphicsItem?

Я не нашел хорошего примера в интернете.

Заранее спасибо!

0

Решение

Хорошо, понял.

Я должен был создать свой экземпляр AnimatedGraphicsItem объект, то setPixmap, setFlag, … а также addItem на мою сцену (и это было важно использовать new).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]