• 27.QT-QProgressBar动态实现多彩进度条(详解)


    #include "ProgressBar.h"
    
    ProgressBar:: ProgressBar(const QString&  fileName,QWidget *parent ) :
        QWidget(parent),
        m_bar(this),
        m_value(this),
        m_slider(this),
        m_image(fileName)
    {
    
        m_bar.setMaximum(100);
        m_bar.setMinimum(0);
        m_bar.setValue(0);
        m_bar.setTextVisible(false);
        m_bar.setFixedHeight(20);
    
        m_slider.setMaximum(100);
        m_slider.setMinimum(0);
        m_slider.setValue(0);
        m_slider.setOrientation(Qt::Horizontal);
    
        m_value.setText(QString("%1%").arg(m_bar.value()));
        m_value.setAlignment(Qt::AlignRight|Qt::AlignVCenter);
        m_value.setMinimumWidth(40);
    QHBoxLayout* hlayout=new QHBoxLayout(); hlayout->addWidget(&m_slider); hlayout->addWidget(&m_value,0,Qt::AlignRight); QVBoxLayout* vlayout=new QVBoxLayout(); vlayout->addWidget(&m_bar); vlayout->addLayout(hlayout); setLayout(vlayout); connect(&m_slider,SIGNAL(valueChanged ( int)),&m_bar,SLOT(setValue (int))); connect(&m_bar,SIGNAL(valueChanged ( int)),this,SLOT(onvalueChanged (int))); onvalueChanged(m_bar.value()); } void ProgressBar::onvalueChanged(int value) { QString qss="QProgressBar{" "border: 1px solid rgb(16, 135, 209);" "background: rgba(248,248,255,180);" "border-radius: 6px; }" "QProgressBar::chunk:enabled {" "border-radius: 4px; " "background: qlineargradient(x1:0, y1:0, x2:1, y2:0" ; double v= m_bar.maximum(); double EndColor=static_cast<double>(value)/v ; //获取比例 for(int i=0;i<100;i++) { double Current=EndColor*i/100; QRgb rgb =m_image.pixel((m_image.width()-1)*Current,m_image.height()/2); QColor c(rgb); qss.append(QString(",stop:%1 rgb(%2,%3,%4)").arg(i/100.0).arg(c.red()).arg(c.green()).arg(c.blue())); } qss.append(");}"); m_bar.setStyleSheet(qss); m_value.setText(QString("%1%").arg(m_bar.value())); }

    文章来源:https://www.cnblogs.com/lifexy/p/9193109.html

  • 相关阅读:
    iOS下的四舍五入
    下载私有库 classdump命令 privateFrameworks
    苹果账号下添加测试设备
    新的Mac下如何配置开发者账号信息
    open开发笔记
    C#面向对象基础抽象类
    C#面向对象基础继承
    C#面向对象基础接口
    C#面向对象基础对象引用
    COJ1165(Nearest Numbers)
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9674175.html
Copyright © 2020-2023  润新知