- 我有一个类:mySquare,它继承自 QGraphicsRectItem
- 只添加了我的构造函数、画家和动画:
动画:
void mySquare::animation(mySquare *k)
{
QTimeLine *timeLine = new QTimeLine();
timeLine->setLoopCount(1);
QGraphicsItemAnimation *animation = new QGraphicsItemAnimation();
animation->setItem(k);
animation->setTimeLine(timeLine);
int value = 30;
animation->setTranslationAt(0.3, value, value);
timeLine->start();
// (*)
// x += 30;
// y += 30;
}
画家:
void Klocek::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *widget)
{
bokKwadratu = (min(widget->width(), widget->height()))/5;
setRect(x * 30, y * 30, 30 - 3, 30 - 3);
QRectF rect = boundingRect();
painter->setBrush(brush);
painter->setPen(pen);
QFont font;
font.setPixelSize(bokKwadratu/3);
painter->setFont(font);
painter->drawRect(rect);
painter->drawText(rect,Qt::AlignCenter, QString::number(wartosc));
}
构造函数:
mySquare::mySquare(qreal x, qreal y) : QGraphicsRectItem(x * 10, y * 10, 10, 10)
{
setAcceptHoverEvents(true);
this->x = x;
this->y = y;
pen.setColor(Qt::red);
pen.setWidth(2);
brush.setColor(Qt::blue);
brush.setStyle(Qt::SolidPattern);
}
- 执行动画(翻译)后,我需要更改对象坐标,以便它们与屏幕上的情况兼容。换句话说,在翻译 (30, 30) 之后,我希望矩形的坐标发生变化 (x += 30, y += 30)
- 我的问题是,当我尝试执行此操作时(代码中的 (*) 片段),三角形远离其位置(就像翻译执行了两次一样)
我的问题是如何翻译它并更改坐标而不会出现这种复杂情况。