首页 > 技术知识 > 正文

首先自定义QSlider的子类MyCustomSlider,如下所示。

mycustomslider.h ifndef MYCUSTOMSLIDER_H define MYCUSTOMSLIDER_H include “QSlider” include “QLabel” include “QMouseEvent”

class MyCustomSlider : public QSlider

{

public:

MyCustomSlider(QWidget *parent=0);

~MyCustomSlider();

protected:

virtual void mousePressEvent(QMouseEvent event);

virtual void mouseReleaseEvent(QMouseEvent event);

virtual void mouseMoveEvent(QMouseEvent *event);

private:

QLabel* m_displayLabel;

}; endif // MYCUSTOMSLIDER_H

mycustomslider.cpp

include “mycustomslider.h” include “QPalette”

MyCustomSlider::MyCustomSlider(QWidget *parent):QSlider(parent)

{

m_displayLabel=new QLabel(this);

m_displayLabel->setFixedSize(QSize(20,20));

//设置游标背景为白色

m_displayLabel->setAutoFillBackground(true);

QPalette palette;

palette.setColor(QPalette::Background, Qt::white);

m_displayLabel->setPalette(palette);

m_displayLabel->setAlignment(Qt::AlignCenter);

m_displayLabel->setVisible(false);

m_displayLabel->move(0,3);

}

MyCustomSlider::~MyCustomSlider()

{

}

void MyCustomSlider::mousePressEvent(QMouseEvent *event)

{

if(!m_displayLabel->isVisible())

{

m_displayLabel->setVisible(true);

m_displayLabel->setText(QString::number(this->value()));

}

QSlider::mousePressEvent(event);

}

void MyCustomSlider::mouseReleaseEvent(QMouseEvent *event)

{

if(m_displayLabel->isVisible())

{

m_displayLabel->setVisible(false);

}

QSlider::mouseReleaseEvent(event);

}

void MyCustomSlider::mouseMoveEvent(QMouseEvent event)

{

m_displayLabel->setText(QString::number(this->value()));

m_displayLabel->move((this->width()-m_displayLabel->width())this->value()/(this->maximum()-this->minimum()),3);

QSlider::mouseMoveEvent(event);

}

猜你喜欢