当前位置:   article > 正文

Qt 设置按钮为渐变状态_qt button按钮 渐变色

qt button按钮 渐变色

#include<QPropertyAnimation>
#include<QSequentialAnimationGroup>
#include<QParallelAnimationGroup>
#include<QGraphicsOpacityEffect>

//设置按钮为渐变状态
void MainWindow::setFlickering(QPushButton *pButton)
{
    QGraphicsOpacityEffect *pGOF = new QGraphicsOpacityEffect(this);
    pGOF->setOpacity(1);
    pButton->setGraphicsEffect(pGOF);

    QPropertyAnimation *pPA1 = new QPropertyAnimation(pGOF,"opacity");
    pPA1->setDuration(1000);
    pPA1->setStartValue(1);
    pPA1->setEndValue(0);
    pPA1->setEasingCurve(QEasingCurve::BezierSpline);

    QPropertyAnimation *pPA2 = new QPropertyAnimation(pGOF,"opacity");
    pPA2->setDuration(1000);
    pPA2->setStartValue(0);
    pPA2->setEndValue(1);
    pPA2->setEasingCurve(QEasingCurve::BezierSpline);

    QSequentialAnimationGroup *pSAG = new QSequentialAnimationGroup(this);
    pSAG->addAnimation(pPA1);
    pSAG->addAnimation(pPA2);

    QParallelAnimationGroup *pPAG = new QParallelAnimationGroup(this);
    pPAG->addAnimation(pSAG);

    pPAG->setDirection(QAbstractAnimation::Forward);
    pPAG->setLoopCount(-1);
    pPAG->start();
}

//设置按钮停止渐变
void MainWindow::setFlickStop(QPushButton *pButton)
{
    QGraphicsOpacityEffect *pGOF = new QGraphicsOpacityEffect(this);
    pGOF->setOpacity(1);
    pButton->setGraphicsEffect(pGOF);

    QPropertyAnimation *pPA1 = new QPropertyAnimation(pGOF,"opacity");
    pPA1->setDuration(1000);
    pPA1->setStartValue(1);
    pPA1->setEndValue(0);
    pPA1->setEasingCurve(QEasingCurve::BezierSpline);

    QPropertyAnimation *pPA2 = new QPropertyAnimation(pGOF,"opacity");
    pPA2->setDuration(1000);
    pPA2->setStartValue(0);
    pPA2->setEndValue(1);
    pPA2->setEasingCurve(QEasingCurve::BezierSpline);

    QSequentialAnimationGroup *pSAG = new QSequentialAnimationGroup(this);
    pSAG->addAnimation(pPA1);
    pSAG->addAnimation(pPA2);

    QParallelAnimationGroup *pPAG = new QParallelAnimationGroup(this);
    pPAG->addAnimation(pSAG);

    pPAG->setDirection(QAbstractAnimation::Forward);
    pPAG->setLoopCount(-1);
    pPAG->stop();
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/81365
推荐阅读
相关标签
  

闽ICP备14008679号