Я хочу анимировать QGraphicsPixmapItem
в моем QGraphicsScene
, с QPropertyAnimation
.Самый простой способ анимации QGraphicsPixmapItem?
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
?
Я не нашел хороший пример в Интернете.
Заранее благодарен!