fc924ae47e
Widget examples were moved into a widgets subfolder, but qdoc references were not updated. Change-Id: Id2a4573e723745b9827c664c852807d6116f8f6d Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
86 lines
3.0 KiB
Plaintext
86 lines
3.0 KiB
Plaintext
/****************************************************************************
|
|
**
|
|
** 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/statemachine/trafficlight
|
|
\title Traffic Light Example
|
|
|
|
The Traffic Light example shows how to use \l{The State Machine Framework}
|
|
to implement the control flow of a traffic light.
|
|
|
|
\image trafficlight-example.png
|
|
|
|
In this example we write a TrafficLightWidget class. The traffic light has
|
|
three lights: Red, yellow and green. The traffic light transitions from
|
|
one light to another (red to yellow to green to yellow to red again) at
|
|
certain intervals.
|
|
|
|
\snippet widgets/statemachine/trafficlight/main.cpp 0
|
|
|
|
The LightWidget class represents a single light of the traffic light. It
|
|
provides an \c on property and two slots, turnOn() and turnOff(), to turn
|
|
the light on and off, respectively. The widget paints itself in the color
|
|
that's passed to the constructor.
|
|
|
|
\snippet widgets/statemachine/trafficlight/main.cpp 1
|
|
|
|
The TrafficLightWidget class represents the visual part of the traffic
|
|
light; it's a widget that contains three lights arranged vertically, and
|
|
provides accessor functions for these.
|
|
|
|
\snippet widgets/statemachine/trafficlight/main.cpp 2
|
|
|
|
The createLightState() function creates a state that turns a light on when
|
|
the state is entered, and off when the state is exited. The state uses a
|
|
timer, and as we shall see the timeout is used to transition from one
|
|
LightState to another. Here is the statechart for the light state:
|
|
|
|
\image trafficlight-example1.png
|
|
\omit
|
|
\caption This is a caption
|
|
\endomit
|
|
|
|
\snippet widgets/statemachine/trafficlight/main.cpp 3
|
|
|
|
The TrafficLight class combines the TrafficLightWidget with a state
|
|
machine. The state graph has four states: red-to-yellow, yellow-to-green,
|
|
green-to-yellow and yellow-to-red. The initial state is red-to-yellow;
|
|
when the state's timer times out, the state machine transitions to
|
|
yellow-to-green. The same process repeats through the other states.
|
|
This is what the statechart looks like:
|
|
|
|
\image trafficlight-example2.png
|
|
\omit
|
|
\caption This is a caption
|
|
\endomit
|
|
|
|
\snippet widgets/statemachine/trafficlight/main.cpp 4
|
|
|
|
The main() function constructs a TrafficLight and shows it.
|
|
|
|
*/
|