Qt文档阅读笔记-QPropertyAnimation官方解析及实例
目錄
官方解析
博主例子
官方解析
QPropertyAnimation
QPropertyAnimation類為Qt屬性提供動畫。
QPropertyAnimation類可以修改Qt屬性,從而達到動畫的效果。這些屬性的值存儲在QVariants中,所以QPropertyAnimation繼承了QvariantAnimation,并且支持他相同元類型的動畫,比如他的超類。
這個類必須是QObject的派生類。他必須經(jīng)過一個設置才能使動畫效果成為可能(這樣的化QPropertyAnimation能夠設置屬性的值)。注意到這使得Qt小部件(窗口)都能做出動畫的形式。舉個例子:
屬性名和QObject的實例這屬性應該被傳遞給動畫的構(gòu)造函數(shù)。然后你能指定這個屬性的開始和結(jié)束的指。當你自定義屬性的時候?qū)崿F(xiàn)的效果也是一樣的,只要QVariant能支持,QVariantAnimation就能用。
QVariantAnimation類描述了如何去做一個動畫的細節(jié)。注意,如果start value沒有被設置,這個屬性會設置一個值,這個值是QPropertyAnimation實例化的時候創(chuàng)建的。
QpropertyAnimation工作的時候是充滿魅力的,要想完成一個復雜的動畫,要包含幾個對象實例,這里把他們放到QAnimationGroup中。一個動畫組也是一個動畫,這個動畫包含了許許多多的動畫。當組內(nèi)的動畫運行時他能夠管理內(nèi)部的小動畫,查看QParallelAnimationGroup這個例子可以看他如何使用以及管理。
?
博主例子
我們把官方實例完整的實現(xiàn)出來。可以發(fā)現(xiàn)QpropertyAnimation和QTimeLine效果有點像,不過還是有區(qū)別的,關(guān)于QTimeLine可以看本人的這篇博文:https://mp.csdn.net/postedit/81530848
運行截圖如下:
源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }widget.cpp
#include "widget.h" #include "ui_widget.h"#include <QPropertyAnimation> #include <QMetaProperty> #include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);QPropertyAnimation *animation=new QPropertyAnimation(ui->pushButton,"minimumSize");animation->setDuration(10000);animation->setStartValue(QSize(0,0));animation->setEndValue(QSize(300,300));animation->start(); }Widget::~Widget() {delete ui; }關(guān)于QPushButton的屬性可以用下面這種方式獲得:
偽代碼如下:
for(int i=0;i<ui->pushButton->metaObject()->propertyCount();i++)qDebug()<<ui->pushButton->metaObject()->property(i).name();運行截圖如下:
后面還有很多,再次不再截圖
?
總結(jié)
以上是生活随笔為你收集整理的Qt文档阅读笔记-QPropertyAnimation官方解析及实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-QList (链表) Q
- 下一篇: Java工作笔记-AJAX实现整体不变,