我陷入了場景中簡單Propertyanimation的屬性。該項目只需移動一段距離。隨着財產「pos」它會移動。與我的財產「ScenePosition」它不起作用。調試器進入函數setScenePosition(),但它對顯示的場景沒有影響。QProperty動畫Qt中的scenePos
// chip.h
class Chip : public QObject, public QGraphicsEllipseItem
{
Q_OBJECT
//THIS WORKS - But i have to use scenePosition instead because of the scene
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
// MY ATTEMPT
Q_PROPERTY(QPointF ScenePosition READ ScenePosition WRITE setScenePosition)
public:
explicit Chip(int x, int y, int w, int h, QObject *parent=NULL);
void setScenePosition(QPointF p);
QPointF ScenePosition();
};
我想我以錯誤的方式使用了scenePos()。
//chip.cpp
void Chip::setScenePosition(QPointF p)
{
this->scenePos().setX(p.x());
this->scenePos().setY(p.y());
}
最後調用動畫。這個調用看起來沒什麼問題,因爲它可以與 新的QPropertyAnimation(item,「pos」)配合使用,但與「ScenePosition」不能配合使用,這讓我對setter的實現有疑問。
item = new Chip(col*wCol, 100, wCol, wCol);
item->setVisible(true);
QPropertyAnimation *animation = new QPropertyAnimation(item, "ScenePosition");
addItem(item);
animation->setDuration(1000);
animation->setEndValue(QPoint(col*wCol, 400 - wCol*stacked));
animation->setEasingCurve(QEasingCurve::OutElastic);
animation->start();