我是 Qt 新手,在 QWidget
旋转方面遇到一些问题。
我在 QLabel 中有一个 QPixmap。 我想要的是将其连续旋转 90 度进行动画处理。
我知道QPropertyAnimation
并且我知道如何使用它,但我正在努力解决如何使用它来旋转QWidget
。有没有简单的方法来实现我的目标并用动画旋转整个 QLabel
或其中的 QPixmap
?
谢谢。
最佳答案
这是带有动画的QLabel/QPixmap
旋转的演示。
没有必要使用QPropertyAnimation
。因为QLabel
或QPixmap
没有旋转属性。因此使用QVariantAnimation
使QPixmap
作为动画旋转并使用QPixmap::transformed旋转它。如果你想很好地控制像素图的动画,强烈推荐QGraphicsPixmapItem与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;
};
关于qt - 用于旋转 QWidget 的 QPropertyAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50286919/