Qt 界面设计:实现转圈圈动画效果
要实现一个转圈圈的效果,可以使用 Qt 的 QPropertyAnimation 类来实现。下面是一个简单的示例代码:
#include <QtWidgets>
class CircleWidget : public QWidget
{
public:
CircleWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
setFixedSize(100, 100);
}
protected:
void paintEvent(QPaintEvent *event) override
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::blue);
int radius = qMin(width(), height()) / 2;
painter.drawEllipse(rect().center(), radius, radius);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主窗口
QMainWindow mainWindow;
mainWindow.resize(300, 200);
// 创建转圈圈的小部件
CircleWidget circleWidget(&mainWindow);
circleWidget.move((mainWindow.width() - circleWidget.width()) / 2,
(mainWindow.height() - circleWidget.height()) / 2);
circleWidget.show();
// 创建属性动画
QPropertyAnimation animation(&circleWidget, 'rotation');
animation.setStartValue(0);
animation.setEndValue(360);
animation.setDuration(2000);
animation.setLoopCount(-1);
animation.start();
mainWindow.show();
return app.exec();
}
在上面的代码中,我们创建了一个自定义的 CircleWidget 小部件,它继承自 QWidget,并在 paintEvent() 函数中绘制了一个蓝色的圆。
然后,在主函数中,我们创建了一个主窗口和一个 CircleWidget 小部件,并将它们显示出来。接着,我们创建了一个 QPropertyAnimation 对象,并设置了其目标对象为 CircleWidget 小部件,属性为 'rotation'。我们将 'rotation' 属性的起始值设为 0,终止值设为 360,持续时间设为 2000 毫秒,并设置循环次数为无限循环。最后,我们调用 start() 函数启动属性动画。
这样,当程序运行时,CircleWidget 小部件会以转圈圈的效果进行旋转。
原文地址: https://www.cveoy.top/t/topic/fpCG 著作权归作者所有。请勿转载和采集!