qt - 用于旋转 QWidget 的 QPropertyAnimation

标签 qt animation rotation qwidget qpixmap

我是 Qt 新手,在 QWidget 旋转方面遇到一些问题。

我在 QLabel 中有一个 QPixmap。 我想要的是将其连续旋转 90 度进行动画处理。

我知道QPropertyAnimation并且我知道如何使用它,但我正在努力解决如何使用它来旋转QWidget。有没有简单的方法来实现我的目标并用动画旋转整个 QLabel 或其中的 QPixmap ? 谢谢。

最佳答案

这是带有动画的QLabel/QPixmap旋转的演示。 没有必要使用QPropertyAnimation。因为QLabelQPixmap没有旋转属性。因此使用QVariantAnimation使QPixmap作为动画旋转并使用QPixmap::transformed旋转它。如果你想很好地控制像素图的动画,强烈推荐QGraphicsPixmapItemQPropertyAnimation

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;
};

关于qt - 用于旋转 QWidget 的 QPropertyAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50286919/

相关文章:

python - 在 PySide 主窗口左侧添加工具栏

python - 使用 pyside 截取 iFrame 的屏幕截图

c++ - 如何确定 QAction 的来源?

ios - 如何更改uipagecontrol的动画页数?

iphone - 动画过渡在横向方向上无法正常工作

c++ - Qt C++ moveToThread() 方法

javascript - JS Animate 的两个属性(!JQ)

iphone - iPhone 应用程序的单阶段动画还是两阶段动画?

java - LWJGL 只旋转一个物体

java - 如何将 "angle-jump"从0补偿到360,反之亦然?