Skip to content

Commit 09369ad

Browse files
committed
Added mouse move event after click on PasswordLengthSlider
1 parent 79077b3 commit 09369ad

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

include/PasswordLengthSlider.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ class PasswordLengthSlider : public QSlider {
1616

1717
protected:
1818
void mousePressEvent(QMouseEvent *event) override;
19+
void mouseReleaseEvent(QMouseEvent *ev) override;
20+
void mouseMoveEvent(QMouseEvent *ev) override;
21+
22+
private:
23+
bool m_Clicked = false;
1924
};
2025

2126
#endif // PASSWORDLENGTHSLIDER_HPP

src/PasswordLengthSlider.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#include "PasswordLengthSlider.hpp"
22

3+
#include <QDebug>
4+
35
void PasswordLengthSlider::mousePressEvent(QMouseEvent *event) {
6+
qDebug() << __PRETTY_FUNCTION__;
7+
48
Qt::MouseButtons btns = QApplication::mouseButtons();
59
QPoint localMousePos = mapFromGlobal(QCursor::pos());
610
bool clickOnSlider = (btns & Qt::LeftButton) &&
@@ -9,6 +13,7 @@ void PasswordLengthSlider::mousePressEvent(QMouseEvent *event) {
913
localMousePos.y() < size().height());
1014

1115
if (clickOnSlider) {
16+
this->m_Clicked = clickOnSlider;
1217
float posRatio = localMousePos.x() / static_cast<float>(size().width());
1318
int sliderRange = maximum() - minimum();
1419
int sliderPosUnderMouse = minimum() + sliderRange * posRatio;
@@ -20,4 +25,25 @@ void PasswordLengthSlider::mousePressEvent(QMouseEvent *event) {
2025
}
2126

2227
QSlider::mousePressEvent(event);
28+
}
29+
30+
void PasswordLengthSlider::mouseReleaseEvent(QMouseEvent *event) {
31+
if (event->button() == Qt::LeftButton && m_Clicked) {
32+
this->m_Clicked = false;
33+
event->accept();
34+
} else {
35+
QSlider::mouseReleaseEvent(event);
36+
}
37+
}
38+
39+
void PasswordLengthSlider::mouseMoveEvent(QMouseEvent *event) {
40+
if (this->m_Clicked) {
41+
float posRatio = event->pos().x() / static_cast<float>(width());
42+
int sliderRange = maximum() - minimum();
43+
int sliderPosUnderMouse = minimum() + sliderRange * posRatio;
44+
setValue(sliderPosUnderMouse);
45+
event->accept();
46+
} else {
47+
QSlider::mouseMoveEvent(event);
48+
}
2349
}

0 commit comments

Comments
 (0)