问题描述
我是Qt的新手,并且 QWidget
轮换有问题。
我在QLabel中有一个QPixmap。
我想要的是对其进行90度连续旋转的动画。
我知道 QPropertyAnimation
,我知道如何使用它,但是我在如何使用它来旋转 QWidget
上感到挣扎。有没有简单的方法可以实现我的目标,并使用动画旋转整个 QLabel
或其中的 QPixmap
?
谢谢。
这是 QLabel / QPixmap轮换的演示
我是Qt的新手,并且 QWidget
轮换有问题。
我在QLabel中有一个QPixmap。
我想要的是对其进行90度连续旋转的动画。
我知道 QPropertyAnimation
,我知道如何使用它,但是我在如何使用它来旋转 QWidget
上感到挣扎。有没有简单的方法可以实现我的目标,并使用动画旋转整个 QLabel
或其中的 QPixmap
?
谢谢。
这是 QLabel / QPixmap轮换的演示
code>和动画。
,没有必要使用 QPropertyAnimation
。因为 QLabel
或 QPixmap
没有旋转属性。因此,使用 QVariantAnimation
使 QPixmap
作为动画旋转并使用对其进行旋转。如果您想很好地控制像素图的动画,强烈建议 QGraphicsPixmapItem 使用 QPropertyAnimation
class RotateMe:public QLabel {
Q_OBJECT
public:
显式RotateMe(QWidget * parent = Q_NULLPTR):
QLabel(parent),
pixmap(100,100),
动画(新的QVariantAnimation)
{
resize(200,200);
pixmap.fill(Qt :: red);
animation-> setDuration(10000);
animation-> setStartValue(0.0f);
animation-> setEndValue(90.0f);
connect(动画,& QVariantAnimation :: valueChanged,[=](const QVariant& value){
qDebug()<< value;
QTransform t;
t.rotate(value.toReal());
setPixmap(pixmap.transformed(t));
});
animation-> start();
}
私人:
QPixmap像素图;
QVariantAnimation *动画;
};
I'm new to Qt and I'm having some problem with QWidget
rotation.
I have a QPixmap inside a QLabel.What I want is to animate it with a continuous rotation by 90 degrees.
I know QPropertyAnimation
and I know how to use it, but I'm struggling with How to use it for rotating a QWidget
. Is there any simple way to use achieve my goal and rotate the entire QLabel
or the QPixmap
inside it with an animation?Thank you.
This is the demo for rotation of QLabel/QPixmap
with animation.it's not necessary to use QPropertyAnimation
. Because there is no rotate property for QLabel
or QPixmap
. So used QVariantAnimation
make QPixmap
rotate as animation and use QPixmap::transformed to rotate it. If you want well to control the animation of the pixmap, highly recommend QGraphicsPixmapItem with QPropertyAnimation
class RotateMe : public QLabel {
Q_OBJECT
public:
explicit RotateMe(QWidget* parent = Q_NULLPTR) :
QLabel(parent),
pixmap(100, 100),
animation(new QVariantAnimation )
{
resize(200, 200);
pixmap.fill(Qt::red);
animation->setDuration(10000);
animation->setStartValue(0.0f);
animation->setEndValue(90.0f);
connect(animation, &QVariantAnimation::valueChanged, [=](const QVariant &value){
qDebug()<<value;
QTransform t;
t.rotate(value.toReal());
setPixmap(pixmap.transformed(t));
});
animation->start();
}
private:
QPixmap pixmap;
QVariantAnimation *animation;
};
这篇关于旋转QWidget的QPropertyAnimation的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!