#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
int m_slider_x;
int m_slider_width;
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"
#include <QMessageBox>
#include <QMouseEvent>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
//ui->horizontalSlider->installEventFilter(this);
m_slider_x = ui->horizontalSlider->x();
m_slider_width = ui->horizontalSlider->width();
}
Dialog::~Dialog()
{
delete ui;
}
#ifndef QSUPERSLIDER_H
#define QSUPERSLIDER_H
#include <QSlider>
#include <QWidget>
#include "dialog.h"
class QSuperSlider : public QSlider
{
Q_OBJECT
public:
QSuperSlider(QWidget *parent = Q_NULLPTR);
~QSuperSlider();
protected:
virtual void enterEvent(QEvent *event);
};
#endif // QSUPERSLIDER_H
#include "qsuperslider.h"
#include <qevent.h>
#include <QMessageBox>
class Dialog;
QSuperSlider::QSuperSlider(QWidget *parent)
:QSlider(parent)
{
}
QSuperSlider:: ~QSuperSlider()
{
}
void QSuperSlider::enterEvent(QEvent *event)
{
Dialog *pParent = (Dialog *)(this->parent());
QPoint pot = cursor().pos(); //鼠标相对于整个屏幕的坐标
int x = pParent->x(); //窗体到屏幕的x坐标
int p_x = pot.x(); //鼠标到屏幕的x坐标
int xx = p_x-x;
xx = xx-pParent->m_slider_x; //得到点击的位置相对于自己控件的位置
float d = (float)((float)xx/pParent->m_slider_width);
float c = (float)((float)1/10);
QString str;
str = QString::number(d);
QMessageBox msgBox;
msgBox.setText(str);
msgBox.exec();
}