要实现一个转圈圈的效果,可以使用 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 小部件会以转圈圈的效果进行旋转。

Qt 界面设计:实现转圈圈动画效果

原文地址: https://www.cveoy.top/t/topic/fpCG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录