2013-08-22 7 views
3

QSlider의 최소, 최대 및 현재 선택된 값을 표시 할 수 있습니까? 물론이를 표시하는 라벨을 사용할 수 있습니다,하지만 당신은 두 가지 옵션이 있습니다 QSliderQSlider 최소, 최대 및 현재 값 표시

+0

당신이 그것을 서브 클래스해야합니다 생각합니다. –

답변

9

이러한 가능성이 있어야한다 생각 ..

1) 댓글에서 언급 된 것으로 - 서브 - 클래스

2) QSlider를 QSlider로 추가하고 부모 인으로 추가하려면 QSlider에 eventHandler()를 설치하여 resize 이벤트를 올바른 위치로 잡아서 스크롤 이벤트를 처리하면됩니다. 그러면 레이블을 업데이트 할 수 있습니다. QSlider 상단에

1

멋진 슬라이드를 빠르게 구현했습니다. r의 하위 클래스 qslider를 사용하면 슬라이더 핸들 바로 아래의 현재 값이 툴팁으로 표시됩니다.

헤더

#ifndef FANCYSLIDER_H 
#define FANCYSLIDER_H 

#include <QSlider> 

class FancySlider : public QSlider 
{ 
    Q_OBJECT 
public: 
    explicit FancySlider(QWidget *parent = 0); 
    explicit FancySlider(Qt::Orientation orientation, QWidget *parent = 0); 

protected: 
    virtual void sliderChange(SliderChange change); 
}; 

#endif // FANCYSLIDER_H 

CPP

#include "FancySlider.h" 

#include <QStyleOptionSlider> 
#include <QToolTip> 

FancySlider::FancySlider(QWidget * parent) 
    : QSlider(parent) 
{ 
} 

FancySlider::FancySlider(Qt::Orientation orientation, QWidget * parent) 
    : QSlider(orientation, parent) 
{ 
} 

void FancySlider::sliderChange(QAbstractSlider::SliderChange change) 
{ 
    QSlider::sliderChange(change); 

    if (change == QAbstractSlider::SliderValueChange) 
    { 
     QStyleOptionSlider opt; 
     initStyleOption(&opt); 

     QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); 
     QPoint bottomRightCorner = sr.bottomLeft(); 

     QToolTip::showText(mapToGlobal(QPoint(bottomRightCorner.x(), bottomRightCorner.y())), QString::number(value()), this); 
    } 
}