2018-08-24 03:43:44 +02:00
|
|
|
#include "slider-absoluteset-style.hpp"
|
2024-04-28 19:13:02 +02:00
|
|
|
#include "absolute-slider.hpp"
|
2018-08-24 03:43:44 +02:00
|
|
|
#include <QStyleFactory>
|
|
|
|
|
2024-04-28 19:13:02 +02:00
|
|
|
AbsoluteSlider::AbsoluteSlider(QWidget *parent) : SliderIgnoreScroll(parent)
|
2018-08-24 03:43:44 +02:00
|
|
|
{
|
2022-06-11 20:11:27 +02:00
|
|
|
installEventFilter(this);
|
2018-08-24 03:43:44 +02:00
|
|
|
setMouseTracking(true);
|
|
|
|
|
|
|
|
QString styleName = style()->objectName();
|
|
|
|
QStyle *style;
|
|
|
|
style = QStyleFactory::create(styleName);
|
|
|
|
if (!style) {
|
|
|
|
style = new SliderAbsoluteSetStyle();
|
|
|
|
} else {
|
|
|
|
style = new SliderAbsoluteSetStyle(style);
|
|
|
|
}
|
|
|
|
|
|
|
|
style->setParent(this);
|
|
|
|
this->setStyle(style);
|
|
|
|
}
|
|
|
|
|
2024-04-28 19:13:02 +02:00
|
|
|
void AbsoluteSlider::mouseMoveEvent(QMouseEvent *event)
|
2018-08-24 03:43:44 +02:00
|
|
|
{
|
2022-07-19 16:12:17 +02:00
|
|
|
int val = minimum() +
|
|
|
|
((maximum() - minimum()) * event->pos().x()) / width();
|
2018-08-24 03:43:44 +02:00
|
|
|
|
|
|
|
if (val > maximum())
|
|
|
|
val = maximum();
|
|
|
|
else if (val < minimum())
|
|
|
|
val = minimum();
|
|
|
|
|
2024-04-28 19:13:02 +02:00
|
|
|
emit absoluteSliderHovered(val);
|
2018-08-24 03:43:44 +02:00
|
|
|
event->accept();
|
|
|
|
QSlider::mouseMoveEvent(event);
|
|
|
|
}
|
2022-06-11 20:11:27 +02:00
|
|
|
|
2024-04-28 19:13:02 +02:00
|
|
|
bool AbsoluteSlider::eventFilter(QObject *obj, QEvent *event)
|
2022-06-11 20:11:27 +02:00
|
|
|
{
|
|
|
|
if (event->type() == QEvent::KeyPress) {
|
|
|
|
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
|
|
|
|
|
|
|
|
if (keyEvent->key() == Qt::Key_Up ||
|
|
|
|
keyEvent->key() == Qt::Key_Down) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (event->type() == QEvent::Wheel)
|
|
|
|
return true;
|
|
|
|
|
|
|
|
return QSlider::eventFilter(obj, event);
|
|
|
|
}
|