Как перекрасить маркер Qslider, не меняя стандартную форму слайдера?
Когда я меняю стандартный слайдер с setStyleSheet:
mySlider = new QSlider(Qt::Horizontal, this);
mySlider->setStyleSheet("QSlider::handle:horizontal { border: 1px solid #777; background:#92B558;}");
Полученный слайдер выглядит так:
Я хочу сохранить форму стандартного слайдера другим цветом. Есть ли другой способ перекрасить стандартный слайдер или создать другой дескриптор, который выглядит похожим?
1 ответ
Боюсь, что это невозможно, поскольку форма слайдера на самом деле нарисована с использованием приложения QStyle. При назначении правила таблицы стилей для ползунка это правило переопределит рисование, выполненное QStyle. Посмотрите на реализацию QFusionStyle для более подробной информации.
Для достижения своей цели вы можете подготовить растровое изображение с точной формой и цветом ползунка, а затем указать его в качестве фона в коде таблицы стилей.
В противном случае вы можете создавать подклассы и делать все рисование самостоятельно в paintEvent, но я думаю, что это излишне, если вы хотите изменить цвет слайдера ИМХО.