我有一个QSlider,让我们假设它的范围是0到100,
我需要的是颜色的QSlider凹槽的背景范围从20到80只。
下面我添加了一个示例图像。

发布于 2013-06-14 14:36:56
我建议您将QSlider子类化并重新实现paintEvent,如下所示:
void My_slider::paintEvent(QPaintEvent *ev) {
QStyleOptionSlider opt;
initStyleOption(&opt);
opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;
if (tickPosition() != NoTicks) {
opt.subControls |= QStyle::SC_SliderTickmarks;
}
QRect groove_rect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, this);
qDebug() << groove_rect;
QSlider::paintEvent(ev);
QRect rect(groove_rect.left() + 0.2 * groove_rect.width(), groove_rect.top(), 0.6 * groove_rect.width(), groove_rect.height());
QPainter painter(this);
painter.fillRect(rect, QBrush(Qt::red));
}发布于 2013-06-14 16:00:30
如果你知道你的滑块的大小(以像素为单位),你也可以使用Qt style sheets to style the groove
https://stackoverflow.com/questions/17101378
复制相似问题