如何在不更改标准滑块形状的情况下重新着色Qslider手柄?

时间:2018-04-10 08:47:38

标签: qt qslider

当我使用setStyleSheet更改标准滑块standard slider时:

mySlider = new QSlider(Qt::Horizontal, this);

mySlider->setStyleSheet("QSlider::handle:horizontal { border: 1px solid #777; background:#92B558;}");

生成的滑块如下所示:changed slider

我想要的是保持标准滑块的形状具有不同的颜色。是否有另一种方法可以重新着色标准滑块,或创建另一个看起来相似的手柄?

1 个答案:

答案 0 :(得分:1)

我担心这是不可能的,因为滑块的形状实际上是使用应用程序QStyle绘制的。 为滑块指定样式表规则时,该规则将覆盖QStyle完成的绘制。有关更多详细信息,请查看QFusionStyle的实现。

为了实现您的目标,您可以准备一个具有滑块的确切形状和颜色的像素图,然后将其指定为样式表代码中的背景。

否则,你可以在paintEvent中自己进行子类化并自己做所有的痛苦,但是如果你只想改变滑块恕我直言的颜色,我认为这是一种矫枉过正。