forked from zhazhaog/qqmsuic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmusicslider.cpp
95 lines (83 loc) · 1.91 KB
/
musicslider.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "musicslider.h"
#include "ui_musicslider.h"
MusicSlider::MusicSlider(QWidget *parent) :
QWidget(parent),
ui(new Ui::MusicSlider)
{
ui->setupUi(this);
ui->currSlider->hide();
}
MusicSlider::~MusicSlider()
{
delete ui;
}
// 移动事件
void MusicSlider::music_move()
{
// 首先增加宽
ui->outLine->setMaximumWidth(currIndex);
ui->outLine->setGeometry(0,8,currIndex,4);
//移动
if (currIndex >= MaxWidth-10)
ui->currSlider->move(MaxWidth-10,5);
else
ui->currSlider->move(currIndex,5);
}
void MusicSlider::leaveEvent(QEvent *event)
{
ui->currSlider->hide();
}
void MusicSlider::mousePressEvent(QMouseEvent *event)
{
movestate = false;
qInfo() << "鼠标单击";
currIndex = event->pos().x();
music_move();
}
void MusicSlider::mouseReleaseEvent(QMouseEvent *event)
{
emit setValue(float(MaxWidth) / float(currIndex) );
currIndex = event->pos().x();
music_move();
movestate = true;
}
void MusicSlider::resizeEvent(QResizeEvent *event)
{
MaxWidth = ui->widget->width();
ui->inLine->setMinimumWidth(MaxWidth);
}
void MusicSlider::enterEvent(QEnterEvent *event)
{
ui->currSlider->show();
}
void MusicSlider::mouseMoveEvent(QMouseEvent *event)
{
if ( event->buttons() == Qt::LeftButton )
{
int x = event->pos().x();
if ( x <= MaxWidth && x >= 0 )
{
qInfo() << event->pos();
currIndex = x;
music_move();
}else{
// 越界
if (!(x <= MaxWidth))
{
currIndex = MaxWidth;
}else{
currIndex = 0;
}
music_move();
qInfo() << "已超出界限";
}
}
}
void MusicSlider::setStep(float bf)
{
// qInfo() << "当前位置" << float(MaxWidth) * bf;
if (!movestate)
return;
currIndex = int(float(MaxWidth) * bf);
music_move();
}