doc/src/examples/spinboxes.qdoc
changeset 0 1918ee327afb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/src/examples/spinboxes.qdoc	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,205 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*! 
+    \example widgets/spinboxes
+    \title Spin Boxes Example
+
+    The Spin Boxes example shows how to use the many different types of spin boxes
+    available in Qt, from a simple QSpinBox widget to more complex editors like
+    the QDateTimeEdit widget.
+
+    \image spinboxes-example.png
+
+    The example consists of a single \c Window class that is used to display the
+    different spin box-based widgets available with Qt.
+
+    \section1 Window Class Definition
+
+    The \c Window class inherits QWidget and contains two slots that are used
+    to provide interactive features:
+
+    \snippet examples/widgets/spinboxes/window.h 0
+
+    The private functions are used to set up each type of spin box in the window.
+    We use member variables to keep track of various widgets so that they can
+    be reconfigured when required.
+
+    \section1 Window Class Implementation
+
+    The constructor simply calls private functions to set up the different types
+    of spin box used in the example, and places each group in a layout:
+
+    \snippet examples/widgets/spinboxes/window.cpp 0
+
+    We use the layout to manage the arrangement of the window's child widgets,
+    and change the window title.
+
+    The \c createSpinBoxes() function constructs a QGroupBox and places three
+    QSpinBox widgets inside it with descriptive labels to indicate the types of
+    input they expect.
+
+    \snippet examples/widgets/spinboxes/window.cpp 1
+
+    The first spin box shows the simplest way to use QSpinBox. It accepts values
+    from -20 to 20, the current value can be increased or decreased by 1 with
+    either the arrow buttons or \key{Up} and \key{Down} keys, and the default
+    value is 0.
+
+    The second spin box uses a larger step size and displays a suffix to
+    provide more information about the type of data the number represents:
+
+    \snippet examples/widgets/spinboxes/window.cpp 2
+
+    This spin box also displays a
+    \l{QAbstractSpinBox::specialValueText}{special value} instead of the minimum
+    value defined for it. This means that it will never show \gui{0%}, but will
+    display \gui{Automatic} when the minimum value is selected.
+
+    The third spin box shows how a prefix can be used:
+
+    \snippet examples/widgets/spinboxes/window.cpp 4
+
+    For simplicity, we show a spin box with a prefix and no suffix. It is also
+    possible to use both at the same time.
+
+    \snippet examples/widgets/spinboxes/window.cpp 5
+
+    The rest of the function sets up a layout for the group box and places each
+    of the widgets inside it.
+
+    The \c createDateTimeEdits() function constructs another group box with a
+    selection of spin boxes used for editing dates and times.
+
+    \snippet examples/widgets/spinboxes/window.cpp 6
+
+    The first spin box is a QDateEdit widget that is able to accept dates
+    within a given range specified using QDate values. The arrow buttons and
+    \key{Up} and \key{Down} keys can be used to increase and decrease the
+    values for year, month, and day when the cursor is in the relevant section.
+
+    The second spin box is a QTimeEdit widget:
+
+    \snippet examples/widgets/spinboxes/window.cpp 7
+
+    Acceptable values for the time are defined using QTime values.
+
+    The third spin box is a QDateTimeEdit widget that can display both date and
+    time values, and we place a label above it to indicate the range of allowed
+    times for a meeting. These widgets will be updated when the user changes a
+    format string.
+
+    \snippet examples/widgets/spinboxes/window.cpp 8
+
+    The format string used for the date time editor, which is also shown in the
+    string displayed by the label, is chosen from a set of strings in a combobox:
+
+    \snippet examples/widgets/spinboxes/window.cpp 9
+    \codeline
+    \snippet examples/widgets/spinboxes/window.cpp 10
+
+    A signal from this combobox is connected to a slot in the \c Window class
+    (shown later).
+
+    \snippet examples/widgets/spinboxes/window.cpp 11
+
+    Each child widget of the group box in placed in a layout.
+
+    The \c setFormatString() slot is called whenever the user selects a new
+    format string in the combobox. The display format for the QDateTimeEdit
+    widget is set using the raw string passed by the signal:
+
+    \snippet examples/widgets/spinboxes/window.cpp 12
+
+    Depending on the visible sections in the widget, we set a new date or time
+    range, and update the associated label to provide relevant information for
+    the user:
+
+    \snippet examples/widgets/spinboxes/window.cpp 13
+
+    When the format string is changed, there will be an appropriate label and
+    entry widget for dates, times, or both types of input.
+
+    The \c createDoubleSpinBoxes() function constructs three spin boxes that are
+    used to input double-precision floating point numbers:
+
+    \snippet examples/widgets/spinboxes/window.cpp 14
+
+    Before the QDoubleSpinBox widgets are constructed, we create a spin box to
+    control how many decimal places they show. By default, only two decimal places
+    are shown in the following spin boxes, each of which is the equivalent of a
+    spin box in the group created by the \c createSpinBoxes() function.
+
+    The first double spin box shows a basic double-precision spin box with the
+    same range, step size, and default value as the first spin box in the
+    \c createSpinBoxes() function:
+
+    \snippet examples/widgets/spinboxes/window.cpp 15
+
+    However, this spin box also allows non-integer values to be entered.
+
+    The second spin box displays a suffix and shows a special value instead
+    of the minimum value:
+
+    \snippet examples/widgets/spinboxes/window.cpp 16
+
+    The third spin box displays a prefix instead of a suffix:
+
+    \snippet examples/widgets/spinboxes/window.cpp 17
+
+    We connect the QSpinBox widget that specifies the precision to a slot in
+    the \c Window class.
+
+    \snippet examples/widgets/spinboxes/window.cpp 18
+
+    The rest of the function places each of the widgets into a layout for the
+    group box.
+
+    The \c changePrecision() slot is called when the user changes the value in
+    the precision spin box:
+
+    \snippet examples/widgets/spinboxes/window.cpp 19
+
+    This function simply uses the integer supplied by the signal to specify the
+    number of decimal places in each of the QDoubleSpinBox widgets. Each one
+    of these will be updated automatically when their
+    \l{QDoubleSpinBox::decimals}{decimals} property is changed.
+*/