Move simple widget mapper example to manual test
Change-Id: I703843b5ee935794c2e2fd0407f9a1508b088ab6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 72a153a7f573008f071986030e73c7be6765bc88) Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
90abc7b9db
commit
ff10467f54
@ -102,8 +102,7 @@
|
||||
As a result, the user is able to select an item from the combo box,
|
||||
and the associated value is written back to the model.
|
||||
|
||||
The rest of the constructor is very similar to that of the
|
||||
\l{Simple Widget Mapper Example}:
|
||||
The rest of the constructor sets up connections and layouts:
|
||||
|
||||
\snippet sqlwidgetmapper/window.cpp Set up connections and layouts
|
||||
|
||||
|
@ -10,14 +10,7 @@
|
||||
|
||||
\image combowidgetmapper-example.png
|
||||
|
||||
In the \l{Simple Widget Mapper Example}, we showed the basic use of a
|
||||
widget mapper to relate data exposed by a model to simple input widgets
|
||||
in a user interface. However, sometimes we want to use input widgets that
|
||||
expose data as choices to the user, such as QComboBox, and we need a way
|
||||
to relate their input to the values stored in the model.
|
||||
|
||||
This example is very similar to the \l{Simple Widget Mapper Example}.
|
||||
Again, we create a \c Window class with an almost identical user interface,
|
||||
We create a \c Window class with an almost identical user interface,
|
||||
except that, instead of providing a spin box so that each person's age
|
||||
can be entered, we provide a combo box to allow their addresses to be
|
||||
classified as "Home", "Work" or "Other".
|
||||
@ -65,8 +58,7 @@
|
||||
interfering with the other input widgets. The implementation is shown later.
|
||||
\endomit
|
||||
|
||||
The rest of the constructor is very similar to that of the
|
||||
\l{Simple Widget Mapper Example}:
|
||||
The rest of the constructor sets up connections and layouts:
|
||||
|
||||
\snippet itemviews/combowidgetmapper/window.cpp Set up connections and layouts
|
||||
|
||||
|
@ -1,101 +0,0 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\example itemviews/simplewidgetmapper
|
||||
\title Simple Widget Mapper Example
|
||||
\ingroup examples-itemviews
|
||||
\brief The Simple Widget Mapper example shows how to use a widget mapper to display
|
||||
data from a model in a collection of widgets.
|
||||
|
||||
\image simplewidgetmapper-example.png
|
||||
|
||||
The QDataWidgetMapper class allows information obtained from a
|
||||
\l{Model Classes}{model} to be viewed and edited in a collection of
|
||||
widgets instead of in an \l{View Classes}{item view}.
|
||||
Any model derived from QAbstractItemModel can be used as the source of
|
||||
data and almost any input widget can be used to display it.
|
||||
|
||||
The example itself is very simple: we create \c Window, a QWidget subclass
|
||||
that we use to hold the widgets used to present the data, and show it. The
|
||||
\c Window class will provide buttons that the user can click to show
|
||||
different records from the model.
|
||||
|
||||
\section1 Window Class Definition
|
||||
|
||||
The class provides a constructor, a slot to keep the buttons up to date,
|
||||
and a private function to set up the model:
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.h Window definition
|
||||
|
||||
In addition to the QDataWidgetMapper object and the controls used to make
|
||||
up the user interface, we use a QStandardItemModel to hold our data.
|
||||
We could use a custom model, but this standard implementation is sufficient
|
||||
for our purposes.
|
||||
|
||||
\section1 Window Class Implementation
|
||||
|
||||
The constructor of the \c Window class can be explained in three parts.
|
||||
In the first part, we set up the widgets used for the user interface:
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.cpp Set up widgets
|
||||
|
||||
We also set up the buddy relationships between various labels and the
|
||||
corresponding input widgets.
|
||||
|
||||
Next, we set up the widget mapper, relating each input widget to a column
|
||||
in the model specified by the call to \l{QDataWidgetMapper::}{setModel()}:
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.cpp Set up the mapper
|
||||
|
||||
We also connect the mapper to the \uicontrol{Next} and \uicontrol{Previous} buttons
|
||||
via its \l{QDataWidgetMapper::}{toNext()} and
|
||||
\l{QDataWidgetMapper::}{toPrevious()} slots. The mapper's
|
||||
\l{QDataWidgetMapper::}{currentIndexChanged()} signal is connected to the
|
||||
\c{updateButtons()} slot in the window which we'll show later.
|
||||
|
||||
In the final part of the constructor, we set up the layout, placing each
|
||||
of the widgets in a grid (we could also use a QFormLayout for this):
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.cpp Set up the layout
|
||||
|
||||
Lastly, we set the window title and initialize the mapper by setting it to
|
||||
refer to the first row in the model.
|
||||
|
||||
The model is initialized in the window's \c{setupModel()} function. Here,
|
||||
we create a standard model with 5 rows and 3 columns, and we insert some
|
||||
sample names, addresses and ages into each row:
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.cpp Set up the model
|
||||
|
||||
As a result, each row can be treated like a record in a database, and the
|
||||
widget mapper will read the data from each row, using the column numbers
|
||||
specified earlier to access the correct data for each widget. This is
|
||||
shown in the following diagram:
|
||||
|
||||
\image widgetmapper-simple-mapping.png
|
||||
|
||||
Since the user can navigate using the buttons in the user interface, the
|
||||
example is fully-functional at this point, but to make it a bit more
|
||||
user-friendly, we implement the \c{updateButtons()} slot to show when the
|
||||
user is viewing the first or last records:
|
||||
|
||||
\snippet itemviews/simplewidgetmapper/window.cpp Slot for updating the buttons
|
||||
|
||||
If the mapper is referring to the first row in the model, the \uicontrol{Previous}
|
||||
button is disabled. Similarly, the \uicontrol{Next} button is disabled if the
|
||||
mapper reaches the last row in the model.
|
||||
|
||||
\section1 More Complex Mappings
|
||||
|
||||
The QDataWidgetMapper class makes it easy to relate information from a
|
||||
model to widgets in a user interface. However, it is sometimes necessary
|
||||
to use input widgets which offer choices to the user, such as QComboBox,
|
||||
in conjunction with a widget mapper.
|
||||
|
||||
In these situations, although the mapping to input widgets remains simple,
|
||||
more work needs to be done to expose additional data to the widget mapper.
|
||||
This is covered by the \l{Combo Widget Mapper Example}{Combo Widget Mapper}
|
||||
and \l{SQL Widget Mapper Example}{SQL Widget Mapper}
|
||||
examples.
|
||||
*/
|
@ -10,7 +10,6 @@ qt_internal_add_example(editabletreemodel)
|
||||
qt_internal_add_example(fetchmore)
|
||||
qt_internal_add_example(frozencolumn)
|
||||
qt_internal_add_example(simpletreemodel)
|
||||
qt_internal_add_example(simplewidgetmapper)
|
||||
qt_internal_add_example(spinboxdelegate)
|
||||
qt_internal_add_example(spreadsheet)
|
||||
qt_internal_add_example(stardelegate)
|
||||
|
@ -9,7 +9,6 @@ SUBDIRS = addressbook \
|
||||
frozencolumn \
|
||||
simpledommodel \
|
||||
simpletreemodel \
|
||||
simplewidgetmapper \
|
||||
spinboxdelegate \
|
||||
spreadsheet \
|
||||
stardelegate
|
||||
|
Loading…
x
Reference in New Issue
Block a user