diff options
Diffstat (limited to 'doc/src/examples/analogclock.qdoc')
-rw-r--r-- | doc/src/examples/analogclock.qdoc | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/doc/src/examples/analogclock.qdoc b/doc/src/examples/analogclock.qdoc deleted file mode 100644 index 4385da07b6..0000000000 --- a/doc/src/examples/analogclock.qdoc +++ /dev/null @@ -1,154 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example widgets/analogclock - \title Analog Clock Example - - The Analog Clock example shows how to draw the contents of a custom - widget. - - \image analogclock-example.png Screenshot of the Analog Clock example - - This example also demonstrates how the transformation and scaling - features of QPainter can be used to make drawing custom widgets - easier. - - \section1 AnalogClock Class Definition - - The \c AnalogClock class provides a clock widget with hour and minute - hands that is automatically updated every few seconds. - We subclass \l QWidget and reimplement the standard - \l{QWidget::paintEvent()}{paintEvent()} function to draw the clock face: - - \snippet examples/widgets/analogclock/analogclock.h 0 - - \section1 AnalogClock Class Implementation - - \snippet examples/widgets/analogclock/analogclock.cpp 1 - - When the widget is constructed, we set up a one-second timer to - keep track of the current time, and we connect it to the standard - \l{QWidget::update()}{update()} slot so that the clock face is - updated when the timer emits the \l{QTimer::timeout()}{timeout()} - signal. - - Finally, we resize the widget so that it is displayed at a - reasonable size. - - \snippet examples/widgets/analogclock/analogclock.cpp 8 - \snippet examples/widgets/analogclock/analogclock.cpp 10 - - The \c paintEvent() function is called whenever the widget's - contents need to be updated. This happens when the widget is - first shown, and when it is covered then exposed, but it is also - executed when the widget's \l{QWidget::update()}{update()} slot - is called. Since we connected the timer's - \l{QTimer::timeout()}{timeout()} signal to this slot, it will be - called at least once every five seconds. - - Before we set up the painter and draw the clock, we first define - two lists of \l {QPoint}s and two \l{QColor}s that will be used - for the hour and minute hands. The minute hand's color has an - alpha component of 191, meaning that it's 75% opaque. - - We also determine the length of the widget's shortest side so that we - can fit the clock face inside the widget. It is also useful to determine - the current time before we start drawing. - - \snippet examples/widgets/analogclock/analogclock.cpp 11 - \snippet examples/widgets/analogclock/analogclock.cpp 12 - \snippet examples/widgets/analogclock/analogclock.cpp 13 - \snippet examples/widgets/analogclock/analogclock.cpp 14 - - The contents of custom widgets are drawn with a QPainter. - Painters can be used to draw on any QPaintDevice, but they are - usually used with widgets, so we pass the widget instance to the - painter's constructor. - - We call QPainter::setRenderHint() with QPainter::Antialiasing to - turn on antialiasing. This makes drawing of diagonal lines much - smoother. - - The translation moves the origin to the center of the widget, and - the scale operation ensures that the following drawing operations - are scaled to fit within the widget. We use a scale factor that - let's us use x and y coordinates between -100 and 100, and that - ensures that these lie within the length of the widget's shortest - side. - - To make our code simpler, we will draw a fixed size clock face that will - be positioned and scaled so that it lies in the center of the widget. - - The painter takes care of all the transformations made during the - paint event, and ensures that everything is drawn correctly. Letting - the painter handle transformations is often easier than performing - manual calculations just to draw the contents of a custom widget. - - \image analogclock-viewport.png - - We draw the hour hand first, using a formula that rotates the coordinate - system counterclockwise by a number of degrees determined by the current - hour and minute. This means that the hand will be shown rotated clockwise - by the required amount. - - \snippet examples/widgets/analogclock/analogclock.cpp 15 - \snippet examples/widgets/analogclock/analogclock.cpp 16 - - We set the pen to be Qt::NoPen because we don't want any outline, - and we use a solid brush with the color appropriate for - displaying hours. Brushes are used when filling in polygons and - other geometric shapes. - - \snippet examples/widgets/analogclock/analogclock.cpp 17 - \snippet examples/widgets/analogclock/analogclock.cpp 19 - - We save and restore the transformation matrix before and after the - rotation because we want to place the minute hand without having to - take into account any previous rotations. - - \snippet examples/widgets/analogclock/analogclock.cpp 20 - \codeline - \snippet examples/widgets/analogclock/analogclock.cpp 21 - - We draw markers around the edge of the clock for each hour. We - draw each marker then rotate the coordinate system so that the - painter is ready for the next one. - - \snippet examples/widgets/analogclock/analogclock.cpp 22 - \snippet examples/widgets/analogclock/analogclock.cpp 23 - - The minute hand is rotated in a similar way to the hour hand. - - \snippet examples/widgets/analogclock/analogclock.cpp 25 - \codeline - \snippet examples/widgets/analogclock/analogclock.cpp 26 - - Again, we draw markers around the edge of the clock, but this - time to indicate minutes. We skip multiples of 5 to avoid drawing - minute markers on top of hour markers. -*/ |