1. 程式人生 > >QT 中如何實現一個簡單的動畫

QT 中如何實現一個簡單的動畫

QT可以實現一下簡單的動畫,比如 運動的時鐘 閃爍的按鈕。

動畫的實現:

(1)建立一個定時器

(2)呼叫QWidget::update()通知介面重繪

實現一個按鈕閃爍的例子:

circlewidget.h

#ifndef CIRCLAWIDGET_H
#define CIRCLAWIDGET_H
#include <QFrame>
#include<QTimer>
class CircleWidget:public QFrame
{
    Q_OBJECT
public:
    CircleWidget(QWidget *parent);
    
~CircleWidget(); private: void paintEvent(QPaintEvent *event); void timerEvent(QTimerEvent *event); private: int m_timerId; int m_times; }; #endif // CIRCLAWIDGET_H

 circlewidgit.cpp

# include"circlewidget.h"
#include<QPainter>
CircleWidget::CircleWidget(QWidget *parent):QFrame(parent)
{
    m_timerId
=startTimer(1000); m_times=0; } CircleWidget::~CircleWidget() { } void CircleWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); int width=this->width(); int height=this->height(); painter.setPen(Qt::NoPen); if(m_times==0) { QBrush brush(QColor(
0xFF,0xFF,0xFF)); painter.setBrush(brush); m_times=1; } else { QBrush brush(QColor(0x88,0x00,0xFF)); painter.setBrush(brush); m_times=0; } m_times++; if(m_times==1) { m_times=0; } painter.drawEllipse(0,0,40,40); } void CircleWidget::timerEvent(QTimerEvent *event) { update(); }