| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the documentation of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:FDL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU Free Documentation License Usage |
| ** 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. Please review the following information to ensure |
| ** the GNU Free Documentation License version 1.3 requirements |
| ** will be met: https://www.gnu.org/licenses/fdl-1.3.html. |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| /*! |
| \example calculatorform |
| \ingroup examples-designer |
| \title Calculator Form Example |
| |
| \brief Using a form created with \QD in an application. |
| |
| The Calculator Form Example shows how to use a form created with |
| \QD in an application by using the user interface information from |
| a QWidget subclass. We use \l{Using a Designer UI File in Your Application} |
| {uic's auto-connection} feature to automatically connect signals |
| from widgets on the form to slots in our code. |
| |
| \image calculatorform-example.png Screenshot of the Calculator Form example |
| |
| The example presents two spin boxes that are used to input integer values |
| and a label that shows their sum. Whenever either of the spin boxes are |
| updated, the signal-slot connections between the widgets and the form |
| ensure that the label is also updated. |
| |
| \section1 Preparation |
| |
| The user interface for this example is designed completely using \QD. The |
| result is a UI file describing the form, the widgets used, any signal-slot |
| connections between them, and other standard user interface properties. |
| |
| To ensure that the example can use this file, we need to include a \c FORMS |
| declaration in the example's project file: |
| |
| \snippet calculatorform/calculatorform.pro 1 |
| |
| When the project is built, \c uic will create a header file that lets us |
| construct the form. |
| |
| \section1 CalculatorForm Class Definition |
| |
| The \c CalculatorForm class uses the user interface described in the |
| \c calculatorform.ui file. To access the form and its contents, we need |
| to include the \c ui_calculatorform.h header file created by \c uic |
| during the build process: |
| |
| \snippet calculatorform/calculatorform.h 0 |
| |
| We define the \c CalculatorForm class by subclassing QWidget because the |
| form itself is based on QWidget: |
| |
| \snippet calculatorform/calculatorform.h 1 |
| |
| Apart from the constructor, the class contains two private slots that |
| are named according to the auto-connection naming convention required |
| by \c uic. |
| The private \c ui member variable refers to the form, and is used to |
| access the contents of the user interface. |
| |
| \section1 CalculatorForm Class Implementation |
| |
| The constructor simply calls the base class's constructor and |
| sets up the form's user interface. |
| |
| \snippet calculatorform/calculatorform.cpp 0 |
| |
| The user interface is set up with the \c setupUI() function. We pass |
| \c this as the argument to this function to use the \c CalculatorForm |
| widget itself as the container for the user interface. |
| |
| To automatically connect signals from the spin boxes defined in the |
| user interface, we use the naming convention that indicates which |
| widgets and their signals in the user interface should be connected |
| to each slot. The first slot is called whenever the spin box called |
| "inputSpinBox1" in the user interface emits the |
| \l{QSpinBox::valueChanged()}{valueChanged()} signal: |
| |
| \snippet calculatorform/calculatorform.cpp 1 |
| |
| When this occurs, we use the value supplied by the signal to update the |
| output label by setting its new text directly. We access the output label |
| and the other spin box via the class's private \c ui variable. |
| |
| The second slot is called whenever the second spin box, called |
| "inputSpinBox2", emits the \l{QSpinBox::valueChanged()}{valueChanged()} |
| signal: |
| |
| \snippet calculatorform/calculatorform.cpp 2 |
| |
| In this case, the value from the first spin box is read and combined |
| with the value supplied by the signal. Again, the output label is |
| updated directly via the \c ui variable. |
| */ |