QT进度条根据百分比显示不同颜色解决方案
QT进度条根据百分比显示不同颜色
请教一下各位怎么做出滑块在中间来回动的进度条。
我想做一个根据进度百分比用不同颜色表示的功能,如1-30%显示红色,31-60%显示黄色61-100%显示绿色,麻烦各位指教,小弟初学QT。万分感谢
------解决方案--------------------
使用QSS来渲染。具体方法如下:
连接valueChanged到一个槽,根据当前进度值调用QProcessBar的setStyleSheet方法,类似这样:
请教一下各位怎么做出滑块在中间来回动的进度条。
我想做一个根据进度百分比用不同颜色表示的功能,如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) }");
------解决方案--------------------
------解决方案--------------------
使用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; }