我想使用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 :(得分:0)
好的,明白了。
我必须将AnimatedGraphicsItem
对象,然后setPixmap
,setFlag
,...和addItem
实例化到我的场景中(使用new
非常重要)。