1
1
#include " PasswordLengthSlider.hpp"
2
2
3
+ #include < QDebug>
4
+
3
5
void PasswordLengthSlider::mousePressEvent (QMouseEvent *event) {
6
+ qDebug () << __PRETTY_FUNCTION__;
7
+
4
8
Qt::MouseButtons btns = QApplication::mouseButtons ();
5
9
QPoint localMousePos = mapFromGlobal (QCursor::pos ());
6
10
bool clickOnSlider = (btns & Qt::LeftButton) &&
@@ -9,6 +13,7 @@ void PasswordLengthSlider::mousePressEvent(QMouseEvent *event) {
9
13
localMousePos.y () < size ().height ());
10
14
11
15
if (clickOnSlider) {
16
+ this ->m_Clicked = clickOnSlider;
12
17
float posRatio = localMousePos.x () / static_cast <float >(size ().width ());
13
18
int sliderRange = maximum () - minimum ();
14
19
int sliderPosUnderMouse = minimum () + sliderRange * posRatio;
@@ -20,4 +25,25 @@ void PasswordLengthSlider::mousePressEvent(QMouseEvent *event) {
20
25
}
21
26
22
27
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
+ }
23
49
}
0 commit comments