Examples: move widgets specific "tools" examples to the correct place

examples/tools -> examples/widgets/tools

Change-Id: I8b9e23c45e07ce5cd9da8f24a9a9f7ae10b2b107
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
J-P Nurmi 2012-11-27 14:18:41 +01:00 committed by The Qt Project
parent 3d66b86cb7
commit cb961007c5
204 changed files with 168 additions and 157 deletions

View File

@ -43,7 +43,8 @@
#include <QContiguousCache> #include <QContiguousCache>
#include <QAbstractListModel> #include <QAbstractListModel>
class QTimer; QT_FORWARD_DECLARE_CLASS(QTimer)
class RandomListModel : public QAbstractListModel class RandomListModel : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT

View File

@ -44,7 +44,7 @@
#include <QWidget> #include <QWidget>
#include "message.h" #include "message.h"
class QTextEdit; QT_FORWARD_DECLARE_CLASS(QTextEdit)
//! [Window class definition] //! [Window class definition]
class Window : public QWidget class Window : public QWidget

View File

@ -1,21 +1,8 @@
TEMPLATE = subdirs TEMPLATE = subdirs
CONFIG += ordered CONFIG += ordered
SUBDIRS = codecs \ SUBDIRS = contiguouscache \
completer \ customtype \
customcompleter \ customtypesending
echoplugin \
i18n \
contiguouscache \
plugandpaintplugins \
plugandpaint \
regexp \
settingseditor \
styleplugin \
treemodelcompleter \
undo \
undoframework
plugandpaint.depends = plugandpaintplugins
# install # install
target.path = $$[QT_INSTALL_EXAMPLES]/tools target.path = $$[QT_INSTALL_EXAMPLES]/tools

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example completer \example tools/completer
\title Completer Example \title Completer Example
The Completer example shows how to provide string-completion facilities The Completer example shows how to provide string-completion facilities
@ -45,14 +45,14 @@
\e{countries.txt} and \e{words.txt}. The resource file contains the \e{countries.txt} and \e{words.txt}. The resource file contains the
following code: following code:
\quotefile completer/completer.qrc \quotefile tools/completer/completer.qrc
\section1 FileSystemModel Class Definition \section1 FileSystemModel Class Definition
The \c FileSystemModel class is a subclass of QFileSystemModel, which provides a data The \c FileSystemModel class is a subclass of QFileSystemModel, which provides a data
model for the local filesystem. model for the local filesystem.
\snippet completer/fsmodel.h 0 \snippet tools/completer/fsmodel.h 0
This class only has a constructor and a \c data() function as it is only This class only has a constructor and a \c data() function as it is only
created to enable \c data() to return the entire file path for the created to enable \c data() to return the entire file path for the
@ -65,14 +65,14 @@
The constructor for the \c FileSystemModel class is used to pass \a parent to The constructor for the \c FileSystemModel class is used to pass \a parent to
QFileSystemModel. QFileSystemModel.
\snippet completer/fsmodel.cpp 0 \snippet tools/completer/fsmodel.cpp 0
As mentioned earlier, the \c data() function is reimplemented in order to As mentioned earlier, the \c data() function is reimplemented in order to
get it to return the entire file parth for the display role. For example, get it to return the entire file parth for the display role. For example,
with a QFileSystemModel, you will see "Program Files" in the view. However, with with a QFileSystemModel, you will see "Program Files" in the view. However, with
\c FileSystemModel, you will see "C:\\Program Files". \c FileSystemModel, you will see "C:\\Program Files".
\snippet completer/fsmodel.cpp 1 \snippet tools/completer/fsmodel.cpp 1
The screenshots below illustrate this difference: The screenshots below illustrate this difference:
@ -90,14 +90,14 @@
private slots - \c about(), \c changeCase(), \c changeMode(), \c changeModel(), private slots - \c about(), \c changeCase(), \c changeMode(), \c changeModel(),
and \c changeMaxVisible(). and \c changeMaxVisible().
\snippet completer/mainwindow.h 0 \snippet tools/completer/mainwindow.h 0
Within the \c MainWindow class, we have two private functions: Within the \c MainWindow class, we have two private functions:
\c createMenu() and \c modelFromFile(). We also declare the private widgets \c createMenu() and \c modelFromFile(). We also declare the private widgets
needed - three QComboBox objects, a QCheckBox, a QCompleter, a QLabel, and needed - three QComboBox objects, a QCheckBox, a QCompleter, a QLabel, and
a QLineEdit. a QLineEdit.
\snippet completer/mainwindow.h 1 \snippet tools/completer/mainwindow.h 1
\section1 MainWindow Class Implementation \section1 MainWindow Class Implementation
@ -110,7 +110,7 @@
the \c modeCombo is set to "Filtered Popup" and the \c caseCombo is set the \c modeCombo is set to "Filtered Popup" and the \c caseCombo is set
to "Case Insensitive". to "Case Insensitive".
\snippet completer/mainwindow.cpp 0 \snippet tools/completer/mainwindow.cpp 0
The \c maxVisibleSpinBox is created and determines the number of visible The \c maxVisibleSpinBox is created and determines the number of visible
item in the completer item in the completer
@ -119,26 +119,26 @@
\c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()} property \c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()} property
is enabled or disabled. is enabled or disabled.
\snippet completer/mainwindow.cpp 1 \snippet tools/completer/mainwindow.cpp 1
We instantiate \c contentsLabel and set its size policy to We instantiate \c contentsLabel and set its size policy to
\l{QSizePolicy::Fixed}{fixed}. The combo boxes' \l{QComboBox::activated()} \l{QSizePolicy::Fixed}{fixed}. The combo boxes' \l{QComboBox::activated()}
{activated()} signals are then connected to their respective slots. {activated()} signals are then connected to their respective slots.
\snippet completer/mainwindow.cpp 2 \snippet tools/completer/mainwindow.cpp 2
The \c lineEdit is set up and then we arrange all the widgets using a The \c lineEdit is set up and then we arrange all the widgets using a
QGridLayout. The \c changeModel() function is called, to initialize the QGridLayout. The \c changeModel() function is called, to initialize the
\c completer. \c completer.
\snippet completer/mainwindow.cpp 3 \snippet tools/completer/mainwindow.cpp 3
The \c createMenu() function is used to instantiate the QAction objects The \c createMenu() function is used to instantiate the QAction objects
needed to fill the \c fileMenu and \c helpMenu. The actions' needed to fill the \c fileMenu and \c helpMenu. The actions'
\l{QAction::triggered()}{triggered()} signals are connected to their \l{QAction::triggered()}{triggered()} signals are connected to their
respective slots. respective slots.
\snippet completer/mainwindow.cpp 4 \snippet tools/completer/mainwindow.cpp 4
The \c modelFromFile() function accepts the \a fileName of a file and The \c modelFromFile() function accepts the \a fileName of a file and
processes it depending on its contents. processes it depending on its contents.
@ -147,26 +147,26 @@
QFile::ReadOnly mode. If this is unsuccessful, the function returns an QFile::ReadOnly mode. If this is unsuccessful, the function returns an
empty QStringListModel. empty QStringListModel.
\snippet completer/mainwindow.cpp 5 \snippet tools/completer/mainwindow.cpp 5
The mouse cursor is then overridden with Qt::WaitCursor before we fill The mouse cursor is then overridden with Qt::WaitCursor before we fill
a QStringList object, \c words, with the contents of \c file. Once this a QStringList object, \c words, with the contents of \c file. Once this
is done, we restore the mouse cursor. is done, we restore the mouse cursor.
\snippet completer/mainwindow.cpp 6 \snippet tools/completer/mainwindow.cpp 6
As mentioned earlier, the resources file contains two files - As mentioned earlier, the resources file contains two files -
\e{countries.txt} and \e{words.txt}. If the \c file read is \e{words.txt}, \e{countries.txt} and \e{words.txt}. If the \c file read is \e{words.txt},
we return a QStringListModel with \c words as its QStringList and we return a QStringListModel with \c words as its QStringList and
\c completer as its parent. \c completer as its parent.
\snippet completer/mainwindow.cpp 7 \snippet tools/completer/mainwindow.cpp 7
If the \c file read is \e{countries.txt}, then we require a If the \c file read is \e{countries.txt}, then we require a
QStandardItemModel with \c words.count() rows, 2 columns, and \c completer QStandardItemModel with \c words.count() rows, 2 columns, and \c completer
as its parent. as its parent.
\snippet completer/mainwindow.cpp 8 \snippet tools/completer/mainwindow.cpp 8
A standard line in \e{countries.txt} is: A standard line in \e{countries.txt} is:
\quotation \quotation
@ -177,12 +177,12 @@
split the country name and its symbol. Once this is done, we return split the country name and its symbol. Once this is done, we return
\c m. \c m.
\snippet completer/mainwindow.cpp 9 \snippet tools/completer/mainwindow.cpp 9
The \c changeMode() function sets the \c{completer}'s mode, depending on The \c changeMode() function sets the \c{completer}'s mode, depending on
the value of \c index. the value of \c index.
\snippet completer/mainwindow.cpp 10 \snippet tools/completer/mainwindow.cpp 10
The \c changeModel() function changes the item model used based on the The \c changeModel() function changes the item model used based on the
model selected by the user. model selected by the user.
@ -191,7 +191,7 @@
of \c modelCombo. If \c case is 0, we use an unsorted QFileSystemModel, providing of \c modelCombo. If \c case is 0, we use an unsorted QFileSystemModel, providing
us with a file path excluding the drive label. us with a file path excluding the drive label.
\snippet completer/mainwindow.cpp 11 \snippet tools/completer/mainwindow.cpp 11
Note that we create the model with \c completer as the parent as this Note that we create the model with \c completer as the parent as this
allows us to replace the model with a new model. The \c completer will allows us to replace the model with a new model. The \c completer will
@ -201,14 +201,14 @@
If \c case is 1, we use the \c DirModel we defined earlier, resulting in If \c case is 1, we use the \c DirModel we defined earlier, resulting in
full paths for the files. full paths for the files.
\snippet completer/mainwindow.cpp 12 \snippet tools/completer/mainwindow.cpp 12
When \c case is 2, we attempt to complete names of countries. This requires When \c case is 2, we attempt to complete names of countries. This requires
a QTreeView object, \c treeView. The country names are extracted from a QTreeView object, \c treeView. The country names are extracted from
\e{countries.txt} and set the popup used to display completions to \e{countries.txt} and set the popup used to display completions to
\c treeView. \c treeView.
\snippet completer/mainwindow.cpp 13 \snippet tools/completer/mainwindow.cpp 13
The screenshot below shows the Completer with the country list model. The screenshot below shows the Completer with the country list model.
@ -229,21 +229,21 @@
to the \c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()} to the \c{completer}'s \l{QCompleter::setWrapAround()}{setWrapAround()}
slot. slot.
\snippet completer/mainwindow.cpp 14 \snippet tools/completer/mainwindow.cpp 14
The \c changeMaxVisible() update the maximum number of visible items in The \c changeMaxVisible() update the maximum number of visible items in
the completer. the completer.
\snippet completer/mainwindow.cpp 15 \snippet tools/completer/mainwindow.cpp 15
The \c about() function provides a brief description about the example. The \c about() function provides a brief description about the example.
\snippet completer/mainwindow.cpp 16 \snippet tools/completer/mainwindow.cpp 16
\section1 \c main() Function \section1 \c main() Function
The \c main() function instantiates QApplication and \c MainWindow and The \c main() function instantiates QApplication and \c MainWindow and
invokes the \l{QWidget::show()}{show()} function. invokes the \l{QWidget::show()}{show()} function.
\snippet completer/main.cpp 0 \snippet tools/completer/main.cpp 0
*/ */

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example echoplugin \example tools/echoplugin
\title Echo Plugin Example \title Echo Plugin Example
This example shows how to create a Qt plugin. This example shows how to create a Qt plugin.
@ -64,7 +64,7 @@
The \c EchoWindow class lets us test the \c EchoPlugin through a The \c EchoWindow class lets us test the \c EchoPlugin through a
GUI. GUI.
\snippet echoplugin/echowindow/echowindow.h 0 \snippet tools/echoplugin/echowindow/echowindow.h 0
We load the plugin in \c loadPlugin() and cast it to \c We load the plugin in \c loadPlugin() and cast it to \c
EchoInterface. When the user clicks the \c button we take the EchoInterface. When the user clicks the \c button we take the
@ -75,7 +75,7 @@
We start with a look at the constructor: We start with a look at the constructor:
\snippet echoplugin/echowindow/echowindow.cpp 0 \snippet tools/echoplugin/echowindow/echowindow.cpp 0
We create the widgets and set a title for the window. We then load We create the widgets and set a title for the window. We then load
the plugin. \c loadPlugin() returns false if the plugin could not the plugin. \c loadPlugin() returns false if the plugin could not
@ -86,7 +86,7 @@
Here is the implementation of \c sendEcho(): Here is the implementation of \c sendEcho():
\snippet echoplugin/echowindow/echowindow.cpp 1 \snippet tools/echoplugin/echowindow/echowindow.cpp 1
This slot is called when the user pushes \c button or presses This slot is called when the user pushes \c button or presses
enter in \c lineEdit. We call \c echo() of the echo interface. In enter in \c lineEdit. We call \c echo() of the echo interface. In
@ -96,14 +96,14 @@
Here is the implementation of \c createGUI(): Here is the implementation of \c createGUI():
\snippet echoplugin/echowindow/echowindow.cpp 2 \snippet tools/echoplugin/echowindow/echowindow.cpp 2
We create the widgets and lay them out in a grid layout. We We create the widgets and lay them out in a grid layout. We
connect the label and line edit to our \c sendEcho() slot. connect the label and line edit to our \c sendEcho() slot.
Here is the \c loadPlugin() function: Here is the \c loadPlugin() function:
\snippet echoplugin/echowindow/echowindow.cpp 3 \snippet tools/echoplugin/echowindow/echowindow.cpp 3
Access to plugins at run-time is provided by QPluginLoader. You Access to plugins at run-time is provided by QPluginLoader. You
supply it with the filename of the shared library the plugin is supply it with the filename of the shared library the plugin is
@ -126,7 +126,7 @@
virtual functions. If non virtual functions were present in the virtual functions. If non virtual functions were present in the
class you would get misleading compile errors in the moc files. class you would get misleading compile errors in the moc files.
\snippet echoplugin/echowindow/echointerface.h 0 \snippet tools/echoplugin/echowindow/echointerface.h 0
We declare \c echo(). In our \c EchoPlugin we use this method to We declare \c echo(). In our \c EchoPlugin we use this method to
return, or echo, \a message. return, or echo, \a message.
@ -146,18 +146,18 @@
If a class implements more than one interface, they are given as If a class implements more than one interface, they are given as
a comma separated list. a comma separated list.
\snippet echoplugin/plugin/echoplugin.h 0 \snippet tools/echoplugin/plugin/echoplugin.h 0
\section1 EchoPlugin Class Implementation \section1 EchoPlugin Class Implementation
Here is the implementation of \c echo(): Here is the implementation of \c echo():
\snippet echoplugin/plugin/echoplugin.cpp 0 \snippet tools/echoplugin/plugin/echoplugin.cpp 0
We simply return the functions parameter. We simply return the functions parameter.
\snippet echoplugin/plugin/echoplugin.cpp 1 \snippet tools/echoplugin/plugin/echoplugin.cpp 1
We use the Q_EXPORT_PLUGIN2 macro to let Qt know that the \c We use the Q_EXPORT_PLUGIN2 macro to let Qt know that the \c
EchoPlugin class is a plugin. The first parameter is the name of EchoPlugin class is a plugin. The first parameter is the name of
@ -166,7 +166,7 @@
\section1 The \c main() function \section1 The \c main() function
\snippet echoplugin/echowindow/main.cpp 0 \snippet tools/echoplugin/echowindow/main.cpp 0
We create an \c EchoWindow and display it as a top-level window. We create an \c EchoWindow and display it as a top-level window.
@ -179,12 +179,12 @@
template and simply includes includes to directories in which template and simply includes includes to directories in which
the echo window and echo plugin lives: the echo window and echo plugin lives:
\snippet echoplugin/echoplugin.pro 0 \snippet tools/echoplugin/echoplugin.pro 0
The profile for the echo window does not need any plugin specific The profile for the echo window does not need any plugin specific
settings. We move on to the plugin profile: settings. We move on to the plugin profile:
\snippet echoplugin/plugin/plugin.pro 0 \snippet tools/echoplugin/plugin/plugin.pro 0
We need to set the TEMPLATE as we now want to make a library We need to set the TEMPLATE as we now want to make a library
instead of an executable. We also need to tell qmake that we are instead of an executable. We also need to tell qmake that we are

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example i18n \example tools/i18n
\title I18N Example \title I18N Example
The Internationalization (I18N) example demonstrates Qt's support for translated The Internationalization (I18N) example demonstrates Qt's support for translated

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example plugandpaint \example tools/plugandpaint
\title Plug & Paint Example \title Plug & Paint Example
The Plug & Paint example demonstrates how to write Qt The Plug & Paint example demonstrates how to write Qt
@ -74,7 +74,7 @@
in the plugins. in the plugins.
\snippet plugandpaint/interfaces.h 0 \snippet tools/plugandpaint/interfaces.h 0
The \c BrushInterface class declares four pure virtual functions. The \c BrushInterface class declares four pure virtual functions.
The first pure virtual function, \c brushes(), returns a list of The first pure virtual function, \c brushes(), returns a list of
@ -96,7 +96,7 @@
virtual destructor. We provide the destructor to keep these virtual destructor. We provide the destructor to keep these
compilers happy. compilers happy.
\snippet plugandpaint/interfaces.h 1 \snippet tools/plugandpaint/interfaces.h 1
The \c ShapeInterface class declares a \c shapes() function that The \c ShapeInterface class declares a \c shapes() function that
works the same as \c{BrushInterface}'s \c brushes() function, and works the same as \c{BrushInterface}'s \c brushes() function, and
@ -106,13 +106,13 @@
parent parameter can be used by the plugin to pop up a dialog parent parameter can be used by the plugin to pop up a dialog
asking the user to specify more information. asking the user to specify more information.
\snippet plugandpaint/interfaces.h 2 \snippet tools/plugandpaint/interfaces.h 2
The \c FilterInterface class declares a \c filters() function The \c FilterInterface class declares a \c filters() function
that returns a list of filter names, and a \c filterImage() that returns a list of filter names, and a \c filterImage()
function that applies a filter to an image. function that applies a filter to an image.
\snippet plugandpaint/interfaces.h 4 \snippet tools/plugandpaint/interfaces.h 4
To make it possible to query at run-time whether a plugin To make it possible to query at run-time whether a plugin
implements a given interface, we must use the \c implements a given interface, we must use the \c
@ -144,7 +144,7 @@
\l{mainwindows/application}{Application}). Here, we'll \l{mainwindows/application}{Application}). Here, we'll
concentrate on the parts of the code that are related to plugins. concentrate on the parts of the code that are related to plugins.
\snippet plugandpaint/mainwindow.cpp 4 \snippet tools/plugandpaint/mainwindow.cpp 4
The \c loadPlugins() function is called from the \c MainWindow The \c loadPlugins() function is called from the \c MainWindow
constructor to detect plugins and update the \uicontrol{Brush}, constructor to detect plugins and update the \uicontrol{Brush},
@ -155,7 +155,7 @@
QObject. That QObject implements plugin interfaces using multiple QObject. That QObject implements plugin interfaces using multiple
inheritance. inheritance.
\snippet plugandpaint/mainwindow.cpp 5 \snippet tools/plugandpaint/mainwindow.cpp 5
The next step is to load dynamic plugins. We initialize the \c The next step is to load dynamic plugins. We initialize the \c
pluginsDir member variable to refer to the \c plugins pluginsDir member variable to refer to the \c plugins
@ -166,9 +166,9 @@
this file is usually located in a subdirectory, so we need to this file is usually located in a subdirectory, so we need to
take this into account. take this into account.
\snippet plugandpaint/mainwindow.cpp 6 \snippet tools/plugandpaint/mainwindow.cpp 6
\snippet plugandpaint/mainwindow.cpp 7 \snippet tools/plugandpaint/mainwindow.cpp 7
\snippet plugandpaint/mainwindow.cpp 8 \snippet tools/plugandpaint/mainwindow.cpp 8
We use QDir::entryList() to get a list of all files in that We use QDir::entryList() to get a list of all files in that
directory. Then we iterate over the result using \l foreach and directory. Then we iterate over the result using \l foreach and
@ -181,12 +181,12 @@
If QPluginLoader::instance() is non-null, we add it to the menus. If QPluginLoader::instance() is non-null, we add it to the menus.
\snippet plugandpaint/mainwindow.cpp 9 \snippet tools/plugandpaint/mainwindow.cpp 9
At the end, we enable or disable the \uicontrol{Brush}, \uicontrol{Shapes}, At the end, we enable or disable the \uicontrol{Brush}, \uicontrol{Shapes},
and \uicontrol{Filters} menus based on whether they contain any items. and \uicontrol{Filters} menus based on whether they contain any items.
\snippet plugandpaint/mainwindow.cpp 10 \snippet tools/plugandpaint/mainwindow.cpp 10
For each plugin (static or dynamic), we check which interfaces it For each plugin (static or dynamic), we check which interfaces it
implements using \l qobject_cast(). First, we try to cast the implements using \l qobject_cast(). First, we try to cast the
@ -195,7 +195,7 @@
by \c brushes(). Then we do the same with the \c ShapeInterface by \c brushes(). Then we do the same with the \c ShapeInterface
and the \c FilterInterface. and the \c FilterInterface.
\snippet plugandpaint/mainwindow.cpp 3 \snippet tools/plugandpaint/mainwindow.cpp 3
The \c aboutPlugins() slot is called on startup and can be The \c aboutPlugins() slot is called on startup and can be
invoked at any time through the \uicontrol{About Plugins} action. It invoked at any time through the \uicontrol{About Plugins} action. It
@ -211,7 +211,7 @@
plugin from which it comes from as the parent; this makes it plugin from which it comes from as the parent; this makes it
convenient to get access to the plugin later. convenient to get access to the plugin later.
\snippet plugandpaint/mainwindow.cpp 0 \snippet tools/plugandpaint/mainwindow.cpp 0
The \c changeBrush() slot is invoked when the user chooses one of The \c changeBrush() slot is invoked when the user chooses one of
the brushes from the \uicontrol{Brush} menu. We start by finding out the brushes from the \uicontrol{Brush} menu. We start by finding out
@ -222,7 +222,7 @@
identifying the brush. Next time the user draws on the paint identifying the brush. Next time the user draws on the paint
area, \c PaintArea will use this brush. area, \c PaintArea will use this brush.
\snippet plugandpaint/mainwindow.cpp 1 \snippet tools/plugandpaint/mainwindow.cpp 1
The \c insertShape() is invoked when the use chooses one of the The \c insertShape() is invoked when the use chooses one of the
shapes from the \uicontrol{Shapes} menu. We retrieve the QAction that shapes from the \uicontrol{Shapes} menu. We retrieve the QAction that
@ -230,7 +230,7 @@
QAction, and finally we call \c ShapeInterface::generateShape() QAction, and finally we call \c ShapeInterface::generateShape()
to obtain a QPainterPath. to obtain a QPainterPath.
\snippet plugandpaint/mainwindow.cpp 2 \snippet tools/plugandpaint/mainwindow.cpp 2
The \c applyFilter() slot is similar: We retrieve the QAction The \c applyFilter() slot is similar: We retrieve the QAction
that invoked the slot, then the \c FilterInterface associated to that invoked the slot, then the \c FilterInterface associated to
@ -243,12 +243,12 @@
The \c PaintArea class contains some code that deals with \c The \c PaintArea class contains some code that deals with \c
BrushInterface, so we'll review it briefly. BrushInterface, so we'll review it briefly.
\snippet plugandpaint/paintarea.cpp 0 \snippet tools/plugandpaint/paintarea.cpp 0
In \c setBrush(), we simply store the \c BrushInterface and the In \c setBrush(), we simply store the \c BrushInterface and the
brush that are given to us by \c MainWindow. brush that are given to us by \c MainWindow.
\snippet plugandpaint/paintarea.cpp 1 \snippet tools/plugandpaint/paintarea.cpp 1
In the \l{QWidget::mouseMoveEvent()}{mouse move event handler}, In the \l{QWidget::mouseMoveEvent()}{mouse move event handler},
we call the \c BrushInterface::mouseMove() function on the we call the \c BrushInterface::mouseMove() function on the
@ -262,7 +262,7 @@
and a list of plugin file names. It calls \c findPlugins() and a list of plugin file names. It calls \c findPlugins()
to fill the QTreeWdiget with information about the plugins: to fill the QTreeWdiget with information about the plugins:
\snippet plugandpaint/plugindialog.cpp 0 \snippet tools/plugandpaint/plugindialog.cpp 0
The \c findPlugins() is very similar to \c The \c findPlugins() is very similar to \c
MainWindow::loadPlugins(). It uses QPluginLoader to access the MainWindow::loadPlugins(). It uses QPluginLoader to access the
@ -270,7 +270,7 @@
populateTreeWidget() uses \l qobject_cast() to find out which populateTreeWidget() uses \l qobject_cast() to find out which
interfaces are implemented by the plugins: interfaces are implemented by the plugins:
\snippet plugandpaint/plugindialog.cpp 1 \snippet tools/plugandpaint/plugindialog.cpp 1
\section1 Importing Static Plugins \section1 Importing Static Plugins
@ -283,7 +283,7 @@
For Plug & Paint, we have chosen to put Q_IMPORT_PLUGIN() in \c For Plug & Paint, we have chosen to put Q_IMPORT_PLUGIN() in \c
main.cpp: main.cpp:
\snippet plugandpaint/main.cpp 0 \snippet tools/plugandpaint/main.cpp 0
The argument to Q_IMPORT_PLUGIN() is the plugin's name, as The argument to Q_IMPORT_PLUGIN() is the plugin's name, as
specified with Q_EXPORT_PLUGIN2() in the \l{Exporting the specified with Q_EXPORT_PLUGIN2() in the \l{Exporting the
@ -292,7 +292,7 @@
In the \c .pro file, we need to specify the static library. In the \c .pro file, we need to specify the static library.
Here's the project file for building Plug & Paint: Here's the project file for building Plug & Paint:
\snippet plugandpaint/plugandpaint.pro 0 \snippet tools/plugandpaint/plugandpaint.pro 0
The \c LIBS line variable specifies the library \c pnp_basictools The \c LIBS line variable specifies the library \c pnp_basictools
located in the \c ../plugandpaintplugins/basictools directory. located in the \c ../plugandpaintplugins/basictools directory.
@ -311,7 +311,7 @@
*/ */
/*! /*!
\example plugandpaintplugins/basictools \example tools/plugandpaintplugins/basictools
\title Plug & Paint Basic Tools Example \title Plug & Paint Basic Tools Example
The Basic Tools example is a static plugin for the The Basic Tools example is a static plugin for the
@ -329,7 +329,7 @@
\section1 Declaration of the Plugin Class \section1 Declaration of the Plugin Class
\snippet plugandpaintplugins/basicbasictoolsplugin.h 0 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.h 0
We start by including \c interfaces.h, which defines the plugin We start by including \c interfaces.h, which defines the plugin
interfaces for the \l{plugandpaint}{Plug & Paint} interfaces for the \l{plugandpaint}{Plug & Paint}
@ -346,7 +346,7 @@
\l qobject_cast() in the \l{plugandpaint}{Plug & Paint} \l qobject_cast() in the \l{plugandpaint}{Plug & Paint}
application to detect interfaces. application to detect interfaces.
\snippet plugandpaintplugins/basicbasictoolsplugin.h 2 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.h 2
In the \c public section of the class, we declare all the In the \c public section of the class, we declare all the
functions from the three interfaces. functions from the three interfaces.
@ -356,23 +356,23 @@
Let's now review the implementation of the \c BasicToolsPlugin Let's now review the implementation of the \c BasicToolsPlugin
member functions inherited from \c BrushInterface. member functions inherited from \c BrushInterface.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 0 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 0
The \c brushes() function returns a list of brushes provided by The \c brushes() function returns a list of brushes provided by
this plugin. We provide three brushes: \uicontrol{Pencil}, \uicontrol{Air this plugin. We provide three brushes: \uicontrol{Pencil}, \uicontrol{Air
Brush}, and \uicontrol{Random Letters}. Brush}, and \uicontrol{Random Letters}.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 1 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 1
On a mouse press event, we just call \c mouseMove() to draw the On a mouse press event, we just call \c mouseMove() to draw the
spot where the event occurred. spot where the event occurred.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 2 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 2
In \c mouseMove(), we start by saving the state of the QPainter In \c mouseMove(), we start by saving the state of the QPainter
and we compute a few variables that we'll need later. and we compute a few variables that we'll need later.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 3 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 3
Then comes the brush-dependent part of the code: Then comes the brush-dependent part of the code:
@ -394,14 +394,14 @@
At the end, we restore the painter state to what it was upon At the end, we restore the painter state to what it was upon
entering the function and we return the bounding rectangle. entering the function and we return the bounding rectangle.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 4 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 4
When the user releases the mouse, we do nothing and return an When the user releases the mouse, we do nothing and return an
empty QRect. empty QRect.
\section1 Implementation of the Shape Interface \section1 Implementation of the Shape Interface
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 5 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 5
The plugin provides three shapes: \uicontrol{Circle}, \uicontrol{Star}, and The plugin provides three shapes: \uicontrol{Circle}, \uicontrol{Star}, and
\uicontrol{Text...}. The three dots after \uicontrol{Text} are there because \uicontrol{Text...}. The three dots after \uicontrol{Text} are there because
@ -413,7 +413,7 @@
distinguish between the internal shape name and the name used in distinguish between the internal shape name and the name used in
the user interface. the user interface.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 6 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 6
The \c generateShape() creates a QPainterPath for the specified The \c generateShape() creates a QPainterPath for the specified
shape. If the shape is \uicontrol{Text}, we pop up a QInputDialog to shape. If the shape is \uicontrol{Text}, we pop up a QInputDialog to
@ -421,12 +421,12 @@
\section1 Implementation of the Filter Interface \section1 Implementation of the Filter Interface
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 7 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 7
The plugin provides three filters: \uicontrol{Invert Pixels}, \uicontrol{Swap The plugin provides three filters: \uicontrol{Invert Pixels}, \uicontrol{Swap
RGB}, and \uicontrol{Grayscale}. RGB}, and \uicontrol{Grayscale}.
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 8 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 8
The \c filterImage() function takes a filter name and a QImage as The \c filterImage() function takes a filter name and a QImage as
parameters and returns an altered QImage. The first thing we do parameters and returns an altered QImage. The first thing we do
@ -444,7 +444,7 @@
Q_EXPORT_PLUGIN2() macro to specify which class provides the Q_EXPORT_PLUGIN2() macro to specify which class provides the
plugin: plugin:
\snippet plugandpaintplugins/basicbasictoolsplugin.cpp 9 \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.cpp 9
This line may appear in any \c .cpp file that is part of the This line may appear in any \c .cpp file that is part of the
plugin's source code. plugin's source code.
@ -453,7 +453,7 @@
Here's the project file for building the Basic Tools plugin: Here's the project file for building the Basic Tools plugin:
\snippet plugandpaintplugins/basicbasictools.pro 0 \snippet tools/plugandpaintplugins/basictools/basictools.pro 0
The \c .pro file differs from typical \c .pro files in many The \c .pro file differs from typical \c .pro files in many
respects. First, it starts with a \c TEMPLATE entry specifying \c respects. First, it starts with a \c TEMPLATE entry specifying \c
@ -489,7 +489,7 @@
*/ */
/*! /*!
\example plugandpaintplugins/extrafilters \example tools/plugandpaintplugins/extrafilters
\title Plug & Paint Extra Filters Example \title Plug & Paint Extra Filters Example
The Extra Filters example is a plugin for the The Extra Filters example is a plugin for the
@ -506,7 +506,7 @@
Here's the project file for building the Extra Filters plugin: Here's the project file for building the Extra Filters plugin:
\snippet plugandpaintplugins/extrafilters/extrafilters.pro 0 \snippet tools/plugandpaintplugins/extrafilters/extrafilters.pro 0
The \c .pro file differs from typical \c .pro files in many The \c .pro file differs from typical \c .pro files in many
respects. First, it starts with a \c TEMPLATE entry specifying \c respects. First, it starts with a \c TEMPLATE entry specifying \c

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example regexp \example tools/regexp
\title Regular Expressions Example \title Regular Expressions Example
The Regular Expressions (RegExp) example shows how regular expressions in Qt are The Regular Expressions (RegExp) example shows how regular expressions in Qt are

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example settingseditor \example tools/settingseditor
\title Settings Editor Example \title Settings Editor Example
The Settings Editor example shows how Qt's standard settings support is used in an The Settings Editor example shows how Qt's standard settings support is used in an

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example styleplugin \example tools/styleplugin
\title Style Plugin Example \title Style Plugin Example
This example shows how to create a plugin that extends Qt with a new This example shows how to create a plugin that extends Qt with a new
@ -73,7 +73,7 @@
\c SimpleStylePlugin inherits QStylePlugin and is the plugin \c SimpleStylePlugin inherits QStylePlugin and is the plugin
class. class.
\snippet styleplugin/plugin/simplestyleplugin.h 0 \snippet tools/styleplugin/plugin/simplestyleplugin.h 0
\c keys() returns a list of style names that this plugin can \c keys() returns a list of style names that this plugin can
create, while \c create() takes such a string and returns the create, while \c create() takes such a string and returns the
@ -87,14 +87,14 @@
Here is the implementation of \c keys(): Here is the implementation of \c keys():
\snippet styleplugin/plugin/simplestyleplugin.cpp 0 \snippet tools/styleplugin/plugin/simplestyleplugin.cpp 0
Since this plugin only supports one style, we return a QStringList Since this plugin only supports one style, we return a QStringList
with the class name of that style. with the class name of that style.
Here is the \c create() function: Here is the \c create() function:
\snippet styleplugin/plugin/simplestyleplugin.cpp 1 \snippet tools/styleplugin/plugin/simplestyleplugin.cpp 1
Note that the key for style plugins are case insensitive. Note that the key for style plugins are case insensitive.
The case sensitivity varies from plugin to plugin, so you need to The case sensitivity varies from plugin to plugin, so you need to
@ -102,7 +102,7 @@
\section1 The \c main() function \section1 The \c main() function
\snippet styleplugin/stylewindow/main.cpp 0 \snippet tools/styleplugin/stylewindow/main.cpp 0
Qt loads the available style plugins when the QApplication object Qt loads the available style plugins when the QApplication object
is initialized. The QStyleFactory class knows about all styles and is initialized. The QStyleFactory class knows about all styles and
@ -114,7 +114,7 @@
The \c SimpleStylePlugin lives in its own directory and have The \c SimpleStylePlugin lives in its own directory and have
its own profile: its own profile:
\snippet styleplugin/plugin/plugin.pro 0 \snippet tools/styleplugin/plugin/plugin.pro 0
In the plugin profile we need to set the lib template as we are In the plugin profile we need to set the lib template as we are
building a shared library instead of an executable. We must also building a shared library instead of an executable. We must also

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example treemodelcompleter \example tools/treemodelcompleter
\title Tree Model Completer Example \title Tree Model Completer Example
The Tree Model Completer example shows how to provide completion The Tree Model Completer example shows how to provide completion
@ -45,7 +45,7 @@
This file is embedded within the \e treemodelcompleter.qrc resource file, This file is embedded within the \e treemodelcompleter.qrc resource file,
which contains the following: which contains the following:
\quotefile treemodelcompleter/treemodelcompleter.qrc \quotefile tools/treemodelcompleter/treemodelcompleter.qrc
\section1 TreeModelCompleter Class Definition \section1 TreeModelCompleter Class Definition
@ -53,7 +53,7 @@
constructors - one with \a parent as an argument and another with constructors - one with \a parent as an argument and another with
\a parent and \a model as arguments. \a parent and \a model as arguments.
\snippet treemodelcompleter/treemodelcompleter.h 0 \snippet tools/treemodelcompleter/treemodelcompleter.h 0
The class reimplements the protected functions The class reimplements the protected functions
\l{QCompleter::splitPath()}{splitPath()} and \l{QCompleter::splitPath()}{splitPath()} and
@ -72,14 +72,14 @@
parent while the second constructor constructs an object with a parent parent while the second constructor constructs an object with a parent
and a QAbstractItemModel, \a model. and a QAbstractItemModel, \a model.
\snippet treemodelcompleter/treemodelcompleter.cpp 0 \snippet tools/treemodelcompleter/treemodelcompleter.cpp 0
\codeline \codeline
\snippet treemodelcompleter/treemodelcompleter.cpp 1 \snippet tools/treemodelcompleter/treemodelcompleter.cpp 1
The \c separator() function is a getter function that returns the The \c separator() function is a getter function that returns the
separator string. separator string.
\snippet treemodelcompleter/treemodelcompleter.cpp 2 \snippet tools/treemodelcompleter/treemodelcompleter.cpp 2
As mentioned earlier, the \c splitPath() function is reimplemented because As mentioned earlier, the \c splitPath() function is reimplemented because
the default implementation is more suited to QDirModel or list models. In the default implementation is more suited to QDirModel or list models. In
@ -87,7 +87,7 @@
matched at each level, we split it using QString::split() with \c sep as its matched at each level, we split it using QString::split() with \c sep as its
separator. separator.
\snippet treemodelcompleter/treemodelcompleter.cpp 3 \snippet tools/treemodelcompleter/treemodelcompleter.cpp 3
The \c pathFromIndex() function returns data for the completionRole() for a The \c pathFromIndex() function returns data for the completionRole() for a
tree model. This function is reimplemented as its default implementation is tree model. This function is reimplemented as its default implementation is
@ -97,7 +97,7 @@
accumulate the data. The function then returns a QStringList, \c dataList, accumulate the data. The function then returns a QStringList, \c dataList,
using a separator to join objects of different levels. using a separator to join objects of different levels.
\snippet treemodelcompleter/treemodelcompleter.cpp 4 \snippet tools/treemodelcompleter/treemodelcompleter.cpp 4
\section1 MainWindow Class Definition \section1 MainWindow Class Definition
@ -105,13 +105,13 @@
custom slots: \c about(), \c changeCase(), \c changeMode(), custom slots: \c about(), \c changeCase(), \c changeMode(),
\c highlight(), and \c updateContentsLabel(). \c highlight(), and \c updateContentsLabel().
\snippet treemodelcompleter/mainwindow.h 0 \snippet tools/treemodelcompleter/mainwindow.h 0
In addition, the class has two private functions, \c createMenu() and In addition, the class has two private functions, \c createMenu() and
\c modelFromFile(), as well as private instances of QTreeView, QComboBox, \c modelFromFile(), as well as private instances of QTreeView, QComboBox,
QLabel, \c TreeModelCompleter and QLineEdit. QLabel, \c TreeModelCompleter and QLineEdit.
\snippet treemodelcompleter/mainwindow.h 1 \snippet tools/treemodelcompleter/mainwindow.h 1
\section1 MainWindow Class Implementation \section1 MainWindow Class Implementation
@ -123,49 +123,49 @@
{highlighted()} signal is connected to \c{MainWindow}'s \c highlight() {highlighted()} signal is connected to \c{MainWindow}'s \c highlight()
slot. slot.
\snippet treemodelcompleter/mainwindow.cpp 0 \snippet tools/treemodelcompleter/mainwindow.cpp 0
The QLabel objects \c modelLabel, \c modeLabel and \c caseLabel are The QLabel objects \c modelLabel, \c modeLabel and \c caseLabel are
instantiated. Also, the QComboBox objects, \c modeCombo and \c caseCombo, instantiated. Also, the QComboBox objects, \c modeCombo and \c caseCombo,
are instantiated and populated. By default, the \c{completer}'s mode is are instantiated and populated. By default, the \c{completer}'s mode is
"Filtered Popup" and the case is insensitive. "Filtered Popup" and the case is insensitive.
\snippet treemodelcompleter/mainwindow.cpp 1 \snippet tools/treemodelcompleter/mainwindow.cpp 1
\codeline \codeline
\snippet treemodelcompleter/mainwindow.cpp 2 \snippet tools/treemodelcompleter/mainwindow.cpp 2
We use a QGridLayout to place all the objects in the \c MainWindow. We use a QGridLayout to place all the objects in the \c MainWindow.
\snippet treemodelcompleter/mainwindow.cpp 3 \snippet tools/treemodelcompleter/mainwindow.cpp 3
The \c createMenu() function sets up the QAction objects required and The \c createMenu() function sets up the QAction objects required and
adds them to the "File" menu and "Help" menu. The adds them to the "File" menu and "Help" menu. The
\l{QAction::triggered()}{triggered()} signals from these actions are \l{QAction::triggered()}{triggered()} signals from these actions are
connected to their respective slots. connected to their respective slots.
\snippet treemodelcompleter/mainwindow.cpp 4 \snippet tools/treemodelcompleter/mainwindow.cpp 4
The \c changeMode() function accepts an \a index corresponding to the The \c changeMode() function accepts an \a index corresponding to the
user's choice of completion mode and changes the \c{completer}'s mode user's choice of completion mode and changes the \c{completer}'s mode
accordingly. accordingly.
\snippet treemodelcompleter/mainwindow.cpp 5 \snippet tools/treemodelcompleter/mainwindow.cpp 5
The \c about() function provides a brief description on the Tree Model The \c about() function provides a brief description on the Tree Model
Completer example. Completer example.
\snippet treemodelcompleter/mainwindow.cpp 6 \snippet tools/treemodelcompleter/mainwindow.cpp 6
The \c changeCase() function alternates between \l{Qt::CaseSensitive} The \c changeCase() function alternates between \l{Qt::CaseSensitive}
{Case Sensitive} and \l{Qt::CaseInsensitive}{Case Insensitive} modes, {Case Sensitive} and \l{Qt::CaseInsensitive}{Case Insensitive} modes,
depending on the value of \a cs. depending on the value of \a cs.
\snippet treemodelcompleter/mainwindow.cpp 7 \snippet tools/treemodelcompleter/mainwindow.cpp 7
\section1 \c main() Function \section1 \c main() Function
The \c main() function instantiates \c MainWindow and invokes the The \c main() function instantiates \c MainWindow and invokes the
\l{QWidget::show()}{show()} function to display it. \l{QWidget::show()}{show()} function to display it.
\snippet treemodelcompleter/main.cpp 0 \snippet tools/treemodelcompleter/main.cpp 0
*/ */

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example undo \example tools/undo
\title Undo Framework \title Undo Framework
This example shows Qt's undo framework in action. This example shows Qt's undo framework in action.

View File

@ -26,7 +26,7 @@
****************************************************************************/ ****************************************************************************/
/*! /*!
\example undoframework \example tools/undoframework
\title Undo Framework Example \title Undo Framework Example
This example shows how to implement undo/redo functionality This example shows how to implement undo/redo functionality
@ -78,7 +78,7 @@
\section1 MainWindow Class Definition \section1 MainWindow Class Definition
\snippet undoframework/mainwindow.h 0 \snippet tools/undoframework/mainwindow.h 0
The \c MainWindow class maintains the undo stack, i.e., it creates The \c MainWindow class maintains the undo stack, i.e., it creates
\l{QUndoCommand}s and pushes and pops them from the stack when it \l{QUndoCommand}s and pushes and pops them from the stack when it
@ -89,13 +89,13 @@
We will start with a look at the constructor: We will start with a look at the constructor:
\snippet undoframework/mainwindow.cpp 0 \snippet tools/undoframework/mainwindow.cpp 0
In the constructor, we set up the DiagramScene and QGraphicsView. In the constructor, we set up the DiagramScene and QGraphicsView.
Here is the \c createUndoView() function: Here is the \c createUndoView() function:
\snippet undoframework/mainwindow.cpp 1 \snippet tools/undoframework/mainwindow.cpp 1
The QUndoView is a widget that display the text, which is set with The QUndoView is a widget that display the text, which is set with
the \l{QUndoCommand::}{setText()} function, for each QUndoCommand the \l{QUndoCommand::}{setText()} function, for each QUndoCommand
@ -103,11 +103,11 @@
Here is the \c createActions() function: Here is the \c createActions() function:
\snippet undoframework/mainwindow.cpp 2 \snippet tools/undoframework/mainwindow.cpp 2
\codeline \codeline
\snippet undoframework/mainwindow.cpp 3 \snippet tools/undoframework/mainwindow.cpp 3
\dots \dots
\snippet undoframework/mainwindow.cpp 5 \snippet tools/undoframework/mainwindow.cpp 5
The \c createActions() function sets up all the examples actions The \c createActions() function sets up all the examples actions
in the manner shown above. The in the manner shown above. The
@ -120,12 +120,12 @@
Here is the \c createMenus() function: Here is the \c createMenus() function:
\snippet undoframework/mainwindow.cpp 6 \snippet tools/undoframework/mainwindow.cpp 6
\dots \dots
\snippet undoframework/mainwindow.cpp 7 \snippet tools/undoframework/mainwindow.cpp 7
\dots \dots
\snippet undoframework/mainwindow.cpp 8 \snippet tools/undoframework/mainwindow.cpp 8
We have to use the QMenu \c aboutToShow() and \c aboutToHide() We have to use the QMenu \c aboutToShow() and \c aboutToHide()
signals since we only want \c deleteAction to be enabled when we signals since we only want \c deleteAction to be enabled when we
@ -133,14 +133,14 @@
Here is the \c itemMoved() slot: Here is the \c itemMoved() slot:
\snippet undoframework/mainwindow.cpp 9 \snippet tools/undoframework/mainwindow.cpp 9
We simply push a MoveCommand on the stack, which calls \c redo() We simply push a MoveCommand on the stack, which calls \c redo()
on it. on it.
Here is the \c deleteItem() slot: Here is the \c deleteItem() slot:
\snippet undoframework/mainwindow.cpp 10 \snippet tools/undoframework/mainwindow.cpp 10
An item must be selected to be deleted. We need to check if it is An item must be selected to be deleted. We need to check if it is
selected as the \c deleteAction may be enabled even if an item is selected as the \c deleteAction may be enabled even if an item is
@ -149,9 +149,9 @@
Here is the \c itemMenuAboutToShow() and itemMenuAboutToHide() slots: Here is the \c itemMenuAboutToShow() and itemMenuAboutToHide() slots:
\snippet undoframework/mainwindow.cpp 11 \snippet tools/undoframework/mainwindow.cpp 11
\codeline \codeline
\snippet undoframework/mainwindow.cpp 12 \snippet tools/undoframework/mainwindow.cpp 12
We implement \c itemMenuAboutToShow() and \c itemMenuAboutToHide() We implement \c itemMenuAboutToShow() and \c itemMenuAboutToHide()
to get a dynamic item menu. These slots are connected to the to get a dynamic item menu. These slots are connected to the
@ -160,28 +160,28 @@
Here is the \c addBox() slot: Here is the \c addBox() slot:
\snippet undoframework/mainwindow.cpp 13 \snippet tools/undoframework/mainwindow.cpp 13
The \c addBox() function creates an AddCommand and pushes it on The \c addBox() function creates an AddCommand and pushes it on
the undo stack. the undo stack.
Here is the \c addTriangle() sot: Here is the \c addTriangle() sot:
\snippet undoframework/mainwindow.cpp 14 \snippet tools/undoframework/mainwindow.cpp 14
The \c addTriangle() function creates an AddCommand and pushes it The \c addTriangle() function creates an AddCommand and pushes it
on the undo stack. on the undo stack.
Here is the implementation of \c about(): Here is the implementation of \c about():
\snippet undoframework/mainwindow.cpp 15 \snippet tools/undoframework/mainwindow.cpp 15
The about slot is triggered by the \c aboutAction and displays an The about slot is triggered by the \c aboutAction and displays an
about box for the example. about box for the example.
\section1 AddCommand Class Definition \section1 AddCommand Class Definition
\snippet undoframework/commands.h 2 \snippet tools/undoframework/commands.h 2
The \c AddCommand class adds DiagramItem graphics items to the The \c AddCommand class adds DiagramItem graphics items to the
DiagramScene. DiagramScene.
@ -190,32 +190,32 @@
We start with the constructor: We start with the constructor:
\snippet undoframework/commands.cpp 7 \snippet tools/undoframework/commands.cpp 7
We first create the DiagramItem to add to the DiagramScene. The We first create the DiagramItem to add to the DiagramScene. The
\l{QUndoCommand::}{setText()} function let us set a QString that \l{QUndoCommand::}{setText()} function let us set a QString that
describes the command. We use this to get custom messages in the describes the command. We use this to get custom messages in the
QUndoView and in the menu of the main window. QUndoView and in the menu of the main window.
\snippet undoframework/commands.cpp 8 \snippet tools/undoframework/commands.cpp 8
\c undo() removes the item from the scene. \c undo() removes the item from the scene.
\snippet undoframework/commands.cpp 9 \snippet tools/undoframework/commands.cpp 9
We set the position of the item as we do not do this in the We set the position of the item as we do not do this in the
constructor. constructor.
\section1 DeleteCommand Class Definition \section1 DeleteCommand Class Definition
\snippet undoframework/commands.h 1 \snippet tools/undoframework/commands.h 1
The DeleteCommand class implements the functionality to remove an The DeleteCommand class implements the functionality to remove an
item from the scene. item from the scene.
\section1 DeleteCommand Class Implementation \section1 DeleteCommand Class Implementation
\snippet undoframework/commands.cpp 4 \snippet tools/undoframework/commands.cpp 4
We know that there must be one selected item as it is not possible We know that there must be one selected item as it is not possible
to create a DeleteCommand unless the item to be deleted is to create a DeleteCommand unless the item to be deleted is
@ -223,17 +223,17 @@
The item must be unselected if it is inserted back into the The item must be unselected if it is inserted back into the
scene. scene.
\snippet undoframework/commands.cpp 5 \snippet tools/undoframework/commands.cpp 5
The item is simply reinserted into the scene. The item is simply reinserted into the scene.
\snippet undoframework/commands.cpp 6 \snippet tools/undoframework/commands.cpp 6
The item is removed from the scene. The item is removed from the scene.
\section1 MoveCommand Class Definition \section1 MoveCommand Class Definition
\snippet undoframework/commands.h 0 \snippet tools/undoframework/commands.h 0
The \l{QUndoCommand::}{mergeWith()} is reimplemented to make The \l{QUndoCommand::}{mergeWith()} is reimplemented to make
consecutive moves of an item one MoveCommand, i.e, the item will consecutive moves of an item one MoveCommand, i.e, the item will
@ -244,20 +244,20 @@
The constructor of MoveCommand looks like this: The constructor of MoveCommand looks like this:
\snippet undoframework/commands.cpp 0 \snippet tools/undoframework/commands.cpp 0
We save both the old and new positions for undo and redo We save both the old and new positions for undo and redo
respectively. respectively.
\snippet undoframework/commands.cpp 2 \snippet tools/undoframework/commands.cpp 2
We simply set the items old position and update the scene. We simply set the items old position and update the scene.
\snippet undoframework/commands.cpp 3 \snippet tools/undoframework/commands.cpp 3
We set the item to its new position. We set the item to its new position.
\snippet undoframework/commands.cpp 1 \snippet tools/undoframework/commands.cpp 1
Whenever a MoveCommand is created, this function is called to Whenever a MoveCommand is created, this function is called to
check if it should be merged with the previous command. It is the check if it should be merged with the previous command. It is the
@ -271,7 +271,7 @@
\section1 DiagramScene Class Definition \section1 DiagramScene Class Definition
\snippet undoframework/diagramscene.h 0 \snippet tools/undoframework/diagramscene.h 0
The DiagramScene implements the functionality to move a The DiagramScene implements the functionality to move a
DiagramItem with the mouse. It emits a signal when a move is DiagramItem with the mouse. It emits a signal when a move is
@ -283,7 +283,7 @@
The \c main() function of the program looks like this: The \c main() function of the program looks like this:
\snippet undoframework/main.cpp 0 \snippet tools/undoframework/main.cpp 0
We draw a grid in the background of the DiagramScene, so we use a We draw a grid in the background of the DiagramScene, so we use a
resource file. The rest of the function creates the \c MainWindow and resource file. The rest of the function creates the \c MainWindow and

Some files were not shown because too many files have changed in this diff Show More