Qt 如何在不更改标准滑块形状的情况下重新激活Qslider控制柄?

Qt 如何在不更改标准滑块形状的情况下重新激活Qslider控制柄?,qt,qslider,Qt,Qslider,使用setStyleSheet更改标准滑块时: mySlider = new QSlider(Qt::Horizontal, this); mySlider->setStyleSheet("QSlider::handle:horizontal { border: 1px solid #777; background:#92B558;}"); 生成的滑块如下所示: 我想要的是用不同的颜色保持标准滑块的形状。是否有其他方法重新绘制标准滑块,或创建另一个外观类似的手柄?恐怕这是不可能的,因为

使用setStyleSheet更改标准滑块时:

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

mySlider->setStyleSheet("QSlider::handle:horizontal { border: 1px solid #777; background:#92B558;}");
生成的滑块如下所示:


我想要的是用不同的颜色保持标准滑块的形状。是否有其他方法重新绘制标准滑块,或创建另一个外观类似的手柄?

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

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


否则,您可以在paintEvent中创建子类并自己进行所有绘制,但如果您只想更改滑块IMHO的颜色,我认为这是一种过分的做法。

对于我(Windows 10)来说,手柄具有相同的矩形形状,有没有设置样式表。你在哪里看到了区别?据我所知,样式表不可能做到这一点。如果可能的话,那么只能通过超越绘制方法并绘制控制柄yourself@vahancho如果使用myslider->setTickPosition(QSlider::TicksBelow),则会出现不使用提示来澄清形状的sry;