source: trunk/examples/widgets/analogclock/analogclock.cpp@ 158

Last change on this file since 158 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 4.0 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the examples of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you are unsure which license is appropriate for your use, please
37** contact the sales department at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include <QtGui>
43
44#include "analogclock.h"
45
46//! [0] //! [1]
47AnalogClock::AnalogClock(QWidget *parent)
48//! [0] //! [2]
49 : QWidget(parent)
50//! [2] //! [3]
51{
52//! [3] //! [4]
53 QTimer *timer = new QTimer(this);
54//! [4] //! [5]
55 connect(timer, SIGNAL(timeout()), this, SLOT(update()));
56//! [5] //! [6]
57 timer->start(1000);
58//! [6]
59
60 setWindowTitle(tr("Analog Clock"));
61 resize(200, 200);
62//! [7]
63}
64//! [1] //! [7]
65
66//! [8] //! [9]
67void AnalogClock::paintEvent(QPaintEvent *)
68//! [8] //! [10]
69{
70 static const QPoint hourHand[3] = {
71 QPoint(7, 8),
72 QPoint(-7, 8),
73 QPoint(0, -40)
74 };
75 static const QPoint minuteHand[3] = {
76 QPoint(7, 8),
77 QPoint(-7, 8),
78 QPoint(0, -70)
79 };
80
81 QColor hourColor(127, 0, 127);
82 QColor minuteColor(0, 127, 127, 191);
83
84 int side = qMin(width(), height());
85 QTime time = QTime::currentTime();
86//! [10]
87
88//! [11]
89 QPainter painter(this);
90//! [11] //! [12]
91 painter.setRenderHint(QPainter::Antialiasing);
92//! [12] //! [13]
93 painter.translate(width() / 2, height() / 2);
94//! [13] //! [14]
95 painter.scale(side / 200.0, side / 200.0);
96//! [9] //! [14]
97
98//! [15]
99 painter.setPen(Qt::NoPen);
100//! [15] //! [16]
101 painter.setBrush(hourColor);
102//! [16]
103
104//! [17] //! [18]
105 painter.save();
106//! [17] //! [19]
107 painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
108 painter.drawConvexPolygon(hourHand, 3);
109 painter.restore();
110//! [18] //! [19]
111
112//! [20]
113 painter.setPen(hourColor);
114//! [20] //! [21]
115
116 for (int i = 0; i < 12; ++i) {
117 painter.drawLine(88, 0, 96, 0);
118 painter.rotate(30.0);
119 }
120//! [21]
121
122//! [22]
123 painter.setPen(Qt::NoPen);
124//! [22] //! [23]
125 painter.setBrush(minuteColor);
126
127//! [24]
128 painter.save();
129 painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
130 painter.drawConvexPolygon(minuteHand, 3);
131 painter.restore();
132//! [23] //! [24]
133
134//! [25]
135 painter.setPen(minuteColor);
136//! [25] //! [26]