-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfaderwidget.cpp
More file actions
65 lines (56 loc) · 1.96 KB
/
faderwidget.cpp
File metadata and controls
65 lines (56 loc) · 1.96 KB
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
/****************************************************************************
**
** Copyright (C) 2006 Trolltech AS. All rights reserved.
**
** This file is part of the documentation of Qt. It was originally
** published as part of Qt Quarterly.
**
** This file may be used under the terms of the GNU General Public License
** version 2.0 as published by the Free Software Foundation or under the
** terms of the Qt Commercial License Agreement. The respective license
** texts for these are provided with the open source and commercial
** editions of Qt.
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
#include <QtGui>
#include "faderwidget.h"
FaderWidget::FaderWidget(QWidget *parent,QColor _startColor)
: QWidget(parent)
{
//if (parent)
// startColor = parent->palette().window().color();
//else
startColor = _startColor;//Qt::white;
currentAlpha = 0;
duration = 200;
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
setAttribute(Qt::WA_DeleteOnClose);
resize(parent->size());
}
void FaderWidget::start()
{
currentAlpha = 255;
timer->start(20);
show();
}
void FaderWidget::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
QColor semiTransparentColor = startColor;
semiTransparentColor.setAlpha(currentAlpha);
painter.fillRect(rect(), semiTransparentColor);
currentAlpha -= 255 * timer->interval() / duration;
if (currentAlpha <= 0) {
timer->stop();
close();
}
}