专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > QT开发

QT进度条根据百分比显示不同颜色解决方案

发布时间:2010-05-30 21:22:35 文章来源:www.iduyao.cn 采编人员:星星草
QT进度条根据百分比显示不同颜色
请教一下各位怎么做出滑块在中间来回动的进度条。
  我想做一个根据进度百分比用不同颜色表示的功能,如1-30%显示红色,31-60%显示黄色61-100%显示绿色,麻烦各位指教,小弟初学QT。万分感谢

------解决方案--------------------
使用QSS来渲染。具体方法如下:

连接valueChanged到一个槽,根据当前进度值调用QProcessBar的setStyleSheet方法,类似这样:

C/C++ code

ui->processBar->setStyleSheet("QProgressBar::chunk { background-color: rgb(255, 0, 0) }");

------解决方案--------------------
探讨

使用QSS来渲染。具体方法如下:

连接valueChanged到一个槽,根据当前进度值调用QProcessBar的setStyleSheet方法,类似这样:

C/C++ code

ui->processBar->setStyleSheet("QProgressBar::chunk { background-color: rgb(255, 0, 0) }");



关于QSS……

------解决方案--------------------
使用Qt 的styleSheet 可以实现:

用于计算比例:
C/C++ code

QString CMainWidget::calcValue(int nValue,int nTotal)
{
    QString strStyle = "";
    int value1 = nTotal * 0.3 + 0.5;
    if (nValue > value1)
    {
        QString str1;
        QString str2;
        float scale1 = (float)value1 / (float)nValue;
        float scale2 = scale1 + 0.000004;
        str1 = str1.setNum(scale1,'f',6);
        str2 = str2.setNum(scale2,'f',6);

        if (nValue > (value1 + value2))
        {
            QString str3;
            QString str4;
            
            float scale3 = 2.0 * scale1;
            float scale4 = scale3 + 0.000004;
            str3 = str3.setNum(scale3,'f',6);
            str4 = str4.setNum(scale4,'f',6);
            qDebug() << str3 << str4;
            strStyle = QString("qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, 
                               stop:0 rgba(255, 0, 0, 255), stop:%1 rgba(255, 0, 0, 255), 
                               stop:%2 rgba(255, 255, 0, 255), stop:%3 rgba(255, 255, 0, 255) 
                               stop:%4 rgba(0, 0, 255, 255), stop:1 rgba(0, 0, 255, 255))")
                .arg(str1)
                .arg(str2)
                .arg(str3)
                .arg(str4);
        }
        else
        {
            strStyle = QString("qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:%1 rgba(255, 0, 0, 255), stop:%2 rgba(255, 255, 0, 255), stop:1 rgba(255, 255, 0, 255))")
                .arg(str1)
                .arg(str2);
        }
    }
    else
    {
        strStyle = "rgba(255, 0, 0, 255)";
    }
    return strStyle;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: