zoukankan      html  css  js  c++  java
  • 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();
    
    }
  • 相关阅读:
    屏幕适配问题
    对八大排序算法的补充说明
    基数排序
    归并排序
    快速排序
    简单选择排序
    堆排序
    希尔排序
    直接插入排序
    (转)Android APK反编译详解
  • 原文地址:https://www.cnblogs.com/fuhang/p/9900295.html
Copyright © 2011-2022 走看看