一、效果展示
二、源码分享
本例程通过qgraphicsview实现svg格式图片旋转。
.hpp
#ifndef mainwindow_h #define mainwindow_h #include <qmainwindow> #include <qgraphicssvgitem> #include <qgraphicsscene> #include <qtimer> #include <qpropertyanimation> qt_begin_namespace namespace ui { class mainwindow; } qt_end_namespace class mainwindow : public qmainwindow { q_object public: mainwindow(qwidget *parent = nullptr); ~mainwindow(); private: ui::mainwindow *ui; qgraphicssvgitem *graphitem; qgraphicsscene *graphscene; }; #endif // mainwindow_h
.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" mainwindow::mainwindow(qwidget *parent) : qmainwindow(parent) , ui(new ui::mainwindow) { ui->setupui(this); this->graphscene = new qgraphicsscene(); this->ui->graphicsview->setscene(this->graphscene); this->graphitem = new qgraphicssvgitem( ":/image/running.svg" ); this->graphitem->setscale(0.5); qrectf boundingrect = this->graphitem->boundingrect(); this->graphitem->settransformoriginpoint(boundingrect.width() / 2, boundingrect.height() / 2); graphscene->additem( this->graphitem ); this->graphitem->setrotation(45); // 创建一个qpropertyanimation对象来控制旋转属性 qpropertyanimation* rotationanimation = new qpropertyanimation(this->graphitem, "rotation"); // 设置动画的起始值和结束值 rotationanimation->setstartvalue(0); rotationanimation->setendvalue(360); // 设置动画持续时间(以毫秒为单位) rotationanimation->setduration(3000); // 设置动画循环次数(-1表示无限循环) rotationanimation->setloopcount(-1); // 启动动画 rotationanimation->start(); this->ui->graphicsview->installeventfilter(this); this->ui->graphicsview->centeron(this->graphitem); } mainwindow::~mainwindow() { delete ui; }
以上就是qt qwidget实现图片旋转动画的详细内容,更多关于qt qwidget旋转的资料请关注代码网其它相关文章!
发表评论