2016-07-29 2 views
0

QSlider의 핸들 색상을 변경하는 데 실패했습니다. 어떻게 그것을 사용자 지정 색으로 변경합니까? QSlider를 서브 클래 싱하여 페인트 이벤트를 다시 구현하고 자체 사각형을 그릴 수 있습니다. 이제 핸들 색상을 설정하고 싶습니다. 서브 클래 싱 된 위젯의 창조자, 나는이 한 - 아무것도 모든 위젯에 어떤 변화를하지 않습니다 - 나는 등의 배경 색상을 포함하여 색상 이외의 다른 속성, 모든 종류의 시도QSlider의 핸들 색상을 변경하는 방법

setStyleSheet("handle:horizontal {color: red}"); 

그것을 여전히 기본 회색으로 유지됩니다. 내 코드가 전혀 실행되지 않는다고 맹세 하겠지만 디버거에서 검사했습니다.

setStyleSheet를 내 paintEvent로 이동하려고 시도했습니다. 아무런 차이가 없었습니다. :이 중요한 경우 나도 몰라,하지만 난이 setStyleSheet 시도 ("QSlider에 해당하는 것이

void FilledSlider::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); 
    QSlider::paintEvent(ev); 
    int grooveCenter = groove_rect.bottom() - (groove_rect.bottom() - groove_rect.top())/2.0; 
    QRect fillRectangle; 
    int left; 
    int width; 
    if(direction < 0) 
    { 
     left = groove_rect.left() + ((1.0 -filledPercentage) * groove_rect.width()); 
     width = filledPercentage * groove_rect.width(); 
    } 
    else 
    { 
     left = groove_rect.left(); 
     width = groove_rect.width() * filledPercentage; 
    } 
    fillRectangle.setRect(left, grooveCenter, width, 0.2*groove_rect.height()); 
    QPainter painter(this); 
    painter.fillRect(fillRectangle, QBrush(Qt::red)); 
} 
+0

이 페인트 이벤트를 작성하는 방법은 어디에서 배웠습니까? 당신이 사용한 참고 문헌에 대한 호기심. 너에게 답을 찾는 데 도움이 될지도 모른다. –

+1

[this] (http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qslider)에 해당하는'setStyleSheet ("QSlider :: handle : horizontal {background-color : red;}) "); 작동하지 않는다면 서브 클래스가 아닌 캐주얼'QSlider'로 시도하십시오. 'paintEvent' 또는 다른 것을 손상시킬 수 있습니다. – ilotXXI

+0

여기에서 페인트 이벤트를 복사했습니다 : http : //stackoverflow.com/questions/17101378/coloring-qslider-for-particular-range – jhowland

답변

0

을 포함하지 않는 경우에 나는 그것을 요구거야 의심 - 여기 paintEvent입니다 : handle : 가로 {배경색 : 빨강;} ") ;.

이 답변을 주셔서 감사합니다. iloXXI!

관련 문제