实现禁用鼠标点击事件和鼠标滚轮事件,并加刻度绘制刻度下的数字
#include <QMainWindow>
#include <QSlider>
class MySlider:public QSlider
{
Q_OBJECT
public:
explicit MySlider(QWidget *parent = 0);
protected:
void wheelEvent(QWheelEvent * e)
{
//不做处理
}
void mousePressEvent(QMouseEvent *ev);
};
#include "MySlider.h"
#include "mainwindow.h"
MySlider::MySlider(QWidget *parent):
QSlider(parent)
{
QLabel* label1=new QLabel(this);
label1->setFixedSize(QSize(10,20));
label1->setText("0");
label1->move(5,10);//数字移动位置,自行调整
QLabel* label2=new QLabel(this);
label2->setFixedSize(QSize(10,20));
label2->setText("1");
label2->move(10,20);
}
void MySlider::mousePressEvent(QMouseEvent *ev)
{
const int value = this->value();
//调用父类的鼠标点击处理事件
QSlider::mousePressEvent(ev);
setValue(value);
//向父窗口发送自定义事件event type,这样就可以在父窗口中捕获这个事件进行处理
QEvent evEvent(static_cast<QEvent::Type>(QEvent::User + 1));
QCoreApplication::sendEvent(parentWidget(), &evEvent);
}