95 lines
3.9 KiB
Plaintext
95 lines
3.9 KiB
Plaintext
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
|
** Contact: http://www.qt-project.org/legal
|
|
**
|
|
** 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 Digia. For licensing terms and
|
|
** conditions see http://qt.digia.com/licensing. For further information
|
|
** use the contact form at http://qt.digia.com/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: http://www.gnu.org/copyleft/fdl.html.
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
/*!
|
|
\example uitools/multipleinheritance
|
|
\title Multiple Inheritance Example
|
|
|
|
The Multiple Inheritance Example shows how to use a form created with
|
|
Qt Designer in an application by subclassing both QWidget and the user
|
|
interface class, which is \c{Ui::CalculatorForm}.
|
|
|
|
\image multipleinheritance-example.png
|
|
|
|
To subclass the \c calculatorform.ui file and ensure that \c qmake
|
|
processes it with the \c uic, we have to include \c calculatorform.ui
|
|
in the \c .pro file, as shown below:
|
|
|
|
\snippet examples/uitools/multipleinheritance/multipleinheritance.pro 0
|
|
|
|
When the project is compiled, the \c uic will generate a corresponding
|
|
\c ui_calculatorform.h.
|
|
|
|
\section1 CalculatorForm Definition
|
|
|
|
In the \c CalculatorForm definition, we include the \c ui_calculatorform.h
|
|
that was generated earlier.
|
|
|
|
\snippet examples/uitools/multipleinheritance/calculatorform.h 0
|
|
|
|
As mentioned earlier, the class is a subclass of both QWidget and
|
|
\c{Ui::CalculatorForm}.
|
|
|
|
\snippet examples/uitools/multipleinheritance/calculatorform.h 1
|
|
|
|
Two slots are defined according to the \l{Automatic Connections}
|
|
{automatic connection} naming convention required by \c uic. This is
|
|
to ensure that \l{QMetaObject}'s auto-connection facilities connect
|
|
all the signals and slots involved automatically.
|
|
|
|
\section1 CalculatorForm Implementation
|
|
|
|
In the constructor, we call \c setupUi() to load the user interface file.
|
|
Note that we do not need the \c{ui} prefix as \c CalculatorForm is a
|
|
subclass of the user interface class.
|
|
|
|
\snippet examples/uitools/multipleinheritance/calculatorform.cpp 0
|
|
|
|
We include two slots, \c{on_inputSpinBox1_valueChanged()} and
|
|
\c{on_inputSpinBox2_valueChanged()}. These slots respond to the
|
|
\l{QSpinBox::valueChanged()}{valueChanged()} signal that both spin boxes
|
|
emit. Whenever there is a change in one spin box's value, we take that
|
|
value and add it to whatever value the other spin box has.
|
|
|
|
\snippet examples/uitools/multipleinheritance/calculatorform.cpp 1
|
|
\codeline
|
|
\snippet examples/uitools/multipleinheritance/calculatorform.cpp 2
|
|
|
|
\section1 \c main() Function
|
|
|
|
The \c main() function instantiates QApplication and \c CalculatorForm.
|
|
The \c calculator object is displayed by invoking the \l{QWidget::show()}
|
|
{show()} function.
|
|
|
|
\snippet examples/uitools/multipleinheritance/main.cpp 0
|
|
|
|
There are various approaches to include forms into applications. The
|
|
Multiple Inheritance approach is just one of them. See
|
|
\l{Using a Designer UI File in Your Application} for more information on
|
|
the other approaches available.
|
|
*/
|