C++ 如何动态设置QProgressBar样式表?
我正在尝试制作一个进度条,它可以根据滑块的值动态改变部分颜色。我现在最接近的方法是使用:C++ 如何动态设置QProgressBar样式表?,c++,qt,qtstylesheets,qprogressbar,C++,Qt,Qtstylesheets,Qprogressbar,我正在尝试制作一个进度条,它可以根据滑块的值动态改变部分颜色。我现在最接近的方法是使用: bar->setStyleSheet(QString("QProgressBar::chunk:vertical {background: qlineargradient(x1:0, y1:0, x2: 0, y2: 1, stop:0 red, stop:0.5 green); border-radius: 9px;}") +QString(
bar->setStyleSheet(QString("QProgressBar::chunk:vertical {background: qlineargradient(x1:0, y1:0, x2: 0, y2: 1, stop:0 red, stop:0.5 green); border-radius: 9px;}")
+QString("QProgressBar::vertical {border: 1px solid #b4adad; border-radius: 9px; background: #2f2828; padding: 0px; text-align: left; margin-right: 4ex;}"));
我已经尝试将第二个停止点设置为slider->value(),这会带走整个样式表,留下一个空白的进度条。
我尝试过只使用CSS代码,这也带走了样式表:
{background: linear-gradient(to bottom, white 0%, blue 25%, blue 100%); border-radius: 9px;}"
我很困惑,因为我可以使用CSS设置背景,但除非我使用QlineArgradent,否则我无法让它工作,这是为什么?为了在Qt样式表中不受限制地实现CSS,需要做什么
是否可以将停止点的值设置为滑块的变化值
我还尝试在if语句中使用setStyleSheet函数,以便样式表本身将根据进度条的值而改变:
if (bar->value()<slider->value()) {
if(条->值()值()){
但是,这不会动态更改样式表。它似乎在打开应用程序之前运行了一次if语句。QT是否在应用程序打开时连续运行while循环,或者我弄错了?从,有一个信号void QProgressBar::valueChanged(int-value)
您可以连接到插槽并对QProgressBar
sylesheet进行所需的更改,例如:
void MainWindow::on_progressBar_valueChanged(int value)
{
if (value >= 0 && value < 50)
ui->progressBar->setStyleSheet("border: 2px solid grey; border-radius: 5px; text-align: center;");
else if (value >= 50 && value < 75)
ui->progressBar->setStyleSheet("background-color: #05B8CC; width: 20px;");
// and so on ...
}
void主窗口::on\u progressBar\u值已更改(int值)
{
如果(值>=0&&value<50)
ui->progressBar->setStyleSheet(“边框:2倍纯灰;边框半径:5倍;文本对齐:中心;”;
否则如果(值>=50&&value<75)
ui->progressBar->setStyleSheet(“背景色:#05B8CC;宽度:20px;”);
//等等。。。
}