Qt5 QSlider调色板在windows下无效

时间:2014-10-30 16:02:31

标签: c++ windows qt user-interface qt5

我用

slider->setPalette(QPalette(mycolor, mycolor));

为滑块(Qt5)着色。在Linux下,这可以很好地工作,但在Windows 7下,滑块看起来完全正常,没有任何颜色变化。

有没有办法在Windows下获得彩色滑块?

1 个答案:

答案 0 :(得分:1)

您需要致电setAutoFillBackground(true) QSlider才能实现此目的:

QPalette p;
p.setColor(QPalette::Window, QColor(42, 42, 42));
slider->setAutoFillBackground(true);
slider->setPalette(p);

作为替代方案,您可以使用QSS

slider->setStyleSheet("QSlider::groove:horizontal { background-color: red; } ");

表示水平滑块或

slider->setStyleSheet("QSlider::groove:vertical{ background-color: red; } ");

用于垂直滑块。

如果您想设置QColor,您可能需要执行以下操作:

QColor myColor;
myColor.setRgb(42, 42, 42);
QString backgroundColor = QString("rgb("%1, %2, %3);").arg(myColor.red()).arg(myColor.green()).arg(myColor.blue());");
slider->setStyleSheet("QSlider::groove:vertical{ background-color: " + backgroundColor  + " } ");

以便结果如下:

QSlider::groove:vertical{ background-color: rgb(42, 42, 42); }

更多详情here