- 私はクラスを持っています: QGraphicsRectItem から継承する mySquare
- コンストラクター、ペインター、およびアニメーションのみを追加しました。
アニメーション:
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)
- 私の問題は、これを実行しようとすると (コード内の (*) フラグメント) 三角形がその位置から遠く離れて配置されることです (翻訳が 2 回実行されたかのように)。
私の質問は、そのような複雑さなしにそれを翻訳して座標を変更する方法です。