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:
Tor Arne Vestbø 2023-06-26 15:18:30 +02:00
parent 90abc7b9db
commit ff10467f54
10 changed files with 3 additions and 115 deletions

View File

@ -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

View File

@ -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

View File

@ -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.
*/

View File

@ -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)

View File

@ -9,7 +9,6 @@ SUBDIRS = addressbook \
frozencolumn \
simpledommodel \
simpletreemodel \
simplewidgetmapper \
spinboxdelegate \
spreadsheet \
stardelegate