美文网首页
Qt学习笔记(十二)简单动画实现

Qt学习笔记(十二)简单动画实现

作者: 行走行囊 | 来源:发表于2018-04-22 16:57 被阅读0次

    1、结合定时器来实现

    // 按钮slot
    void MyAnimationWindow::StartAnimation() {
        m_timerId = startTimer(300);
    }
    // 重写定时器事件
    void MyAnimationWindow::timerEvent(QTimerEvent *event) {
        if (event->timerId() == m_timerId) {
            update();// 重绘
        }
    }
    // 重写绘制事件
    void MyAnimationWindow::paintEvent(QPaintEvent *event) {
        QPainter painter(this);
        if (m_drawTimes == 0) {
            QPen pen(QColor(0, 0, 255));
            QBrush brush(QColor(0, 0, 255));
            painter.setPen(pen);
            painter.setBrush(brush);
            painter.drawEllipse(QPoint(80, 80), 40, 40);
            m_drawTimes++;
        }
        else {
            QPen pen(QColor(100, 100, 100));
            QBrush brush(QColor(100,100, 100));
            painter.setPen(pen);
            painter.setBrush(brush);
            painter.drawEllipse(QPoint(80, 80), 40, 40);
            m_drawTimes++;
            m_drawTimes = 0;
        }
    }
    

    效果图


    image.png

    注意:
    update() 函数只是通知界面重新绘制,会在事件循环中产生一个“绘制事件”paint event,等该事件前面的事件完成后才重新绘制。

    相关文章

      网友评论

          本文标题:Qt学习笔记(十二)简单动画实现

          本文链接:https://www.haomeiwen.com/subject/dgdclftx.html