我在QGraphicsScene中有一堆QRects和一些文本,我试图使用QPropertyAnimation进行动画处理。动画文本工作正常,但QRects不起作用,因为它们无法转换为QGraphicsObject
这完美无缺
QPropertyAnimation *a = new QPropertyAnimation(this);
a->setTargetObject(items[size.x()*size.y()-1-aa]->toGraphicsObject()); //text
a->setPropertyName("pos");
a->setDuration(animationLength);
a->setStartValue(items[size.x()*size.y()-1-aa]->pos());
a->setEndValue(newTextPos);
a->setEasingCurve(easingCurve);
a->start(QAbstractAnimation::DeleteWhenStopped);
但是没有,因为items [2 * size.x()* size.y() - 2-aa] - > toGraphicsObject()返回一个空指针。
QPropertyAnimation *a = new QPropertyAnimation(this);
a->setTargetObject(items[2*size.x()*size.y()-2-aa]->toGraphicsObject()); //rect
a->setPropertyName("pos");
a->setDuration(animationLength);
a->setStartValue(items[2*size.x()*size.y()-2-aa]->pos());
a->setEndValue(newRectPos);
a->setEasingCurve(easingCurve);
a->start(QAbstractAnimation::DeleteWhenStopped);
有没有办法解决这个问题?
答案 0 :(得分:1)
toGraphicsObject
返回空指针,因为QGraphicsRectItem
不是QGraphicsObject
。您无法使用QGraphicsRectItem
执行动画。我可以建议两个解决方法:
QObject
和QGraphicsRectItem
,创建“pos”属性并实现其getter和setter。查看示例here。QGraphicsObject
派生类。实现其boundingRect
和paint
纯虚方法,使其绘制矩形。