2013-06-14 3 views

ответ

4

Я предлагаю вам подкласс 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)); 
} 
+0

Спасибо Mr.Riateche помог мне, – Sivam

+0

привет, можно получить две ручки и выбрать диапазон раскраски с помощью двух ручек. Пожалуйста сделай все необходимое. – Sivam

1

Если вы знаете размер (в пикселях) Юр ползунка вы можете также использовать Qt style sheets to style the groove

+0

ya Я знаю размер моего слайдера, можете ли вы рассказать о некоторых sinnpets, я новичок в Qt, поэтому стили выглядят жесткими для меня. – Sivam

+1

просто следуйте по ссылке, пример находится прямо там. – Yves

Смежные вопросы