旋转QWidget的QPropertyAnimation

旋转QWidget的QPropertyAnimation

本文介绍了旋转QWidget的QPropertyAnimation的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 22:54