slider.h 1.31 KB
#ifndef SLIDER_H
#define SLIDER_H

#include <QWidget>
#include <QPixmap>

class Slider : public QWidget
{
    Q_OBJECT

    bool isSliderDown_;
    int sliderPosition_;
    int value_;
    int minimum_;
    int maximum_;

    QPixmap groove;
    QPixmap sub;
    QPixmap handle;

    int grooveMin;
    int grooveMax;

    QPoint groovePoint;
    QPoint subPoint;

public:
    explicit Slider(QWidget *parent = 0);

    void setSubPixmap(const QPixmap &pixmap);
    void setSubPixmap(const QString &fileName);

    void setRange(int min, int max);
    void setMinimum(int min);
    void setMaximum(int max);

    int value();
    int minimum();
    int maximum();

    bool isSliderDown();
    int sliderPosition();
    void setSliderPosition(int value);

    QList<int> ticks;
    QList<int> bigTicks;

protected:
    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);
    virtual void paintEvent(QPaintEvent *event);
    virtual void resizeEvent(QResizeEvent *event);

private:
    int calcSliderPosition(int mouseX);
    int calcSubLength(int value);
    void updatePixmapPosition();

signals:
    void sliderMoved(int value);
    void valueChanged(int value);

public slots:
    void setValue(int value);

};

#endif // SLIDER_H