У меня есть QSlider давайте предположим, что имеет диапазон от 0 до 100,Окрашивание QSlider для определенного диапазона
Что мне нужно, чтобы цвет фона QSlider канавки из диапазона 20 только 80.
Ниже я добавил образец изображения.
У меня есть QSlider давайте предположим, что имеет диапазон от 0 до 100,Окрашивание QSlider для определенного диапазона
Что мне нужно, чтобы цвет фона QSlider канавки из диапазона 20 только 80.
Ниже я добавил образец изображения.
Я предлагаю вам подкласс 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));
}
Если вы знаете размер (в пикселях) Юр ползунка вы можете также использовать Qt style sheets to style the groove
Спасибо Mr.Riateche помог мне, – Sivam
привет, можно получить две ручки и выбрать диапазон раскраски с помощью двух ручек. Пожалуйста сделай все необходимое. – Sivam