summaryrefslogtreecommitdiffstats
path: root/examples/tools/doc/treemodelcompleter.qdoc
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2012-09-19 09:15:38 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-21 19:59:16 +0200
commitd1f74b8ddf7a6f26f8b2a689cc728282bc68125c (patch)
treed3e369cdf317aedde6018ebf8adfb4ba17129e00 /examples/tools/doc/treemodelcompleter.qdoc
parentd16c565ca6a55788435c52ad45647eda67854d80 (diff)
Move examples to proper location.
Change-Id: Ib808f5d99cb8217f8786411b531fa5bc7fa5250a Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'examples/tools/doc/treemodelcompleter.qdoc')
-rw-r--r--examples/tools/doc/treemodelcompleter.qdoc171
1 files changed, 171 insertions, 0 deletions
diff --git a/examples/tools/doc/treemodelcompleter.qdoc b/examples/tools/doc/treemodelcompleter.qdoc
new file mode 100644
index 0000000000..d233834d0d
--- /dev/null
+++ b/examples/tools/doc/treemodelcompleter.qdoc
@@ -0,0 +1,171 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** 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.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms
+** and conditions contained in a signed written agreement between you
+** and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example treemodelcompleter
+ \title Tree Model Completer Example
+
+ The Tree Model Completer example shows how to provide completion
+ facilities for a hierarchical model, using a period as the separator
+ to access Child, GrandChild and GrandGrandChild level objects.
+
+ \image treemodelcompleter-example.png
+
+ Similar to the \l{Completer Example}, we provide QComboBox objects to
+ enable selection for completion mode and case sensitivity, as well as
+ a QCheckBox for wrap completions.
+
+ \section1 The Resource File
+
+ The contents of the TreeModelCompleter is read from \e treemodel.txt.
+ This file is embedded within the \e treemodelcompleter.qrc resource file,
+ which contains the following:
+
+ \quotefile treemodelcompleter/treemodelcompleter.qrc
+
+ \section1 TreeModelCompleter Class Definition
+
+ The \c TreeModelCompleter is a subclass of QCompleter with two
+ constructors - one with \a parent as an argument and another with
+ \a parent and \a model as arguments.
+
+ \snippet treemodelcompleter/treemodelcompleter.h 0
+
+ The class reimplements the protected functions
+ \l{QCompleter::splitPath()}{splitPath()} and
+ \l{QCompleter::pathFromIndex()}{pathFromIndex()} to suit a tree model.
+ For more information on customizing QCompleter to suit tree models, refer
+ to \l{QCompleter#Handling Tree Models}{Handling Tree Models}.
+
+ \c TreeModelCompleter also has a separator property which is declared
+ using the Q_PROPERTY() macro. The separator has READ and WRITE attributes
+ and the corresponding functions \c separator() and \c setSeparator(). For
+ more information on Q_PROPERTY(), refer to \l{Qt's Property System}.
+
+ \section1 TreeModelCompleter Class Implementation
+
+ The first constructor constructs a \c TreeModelCompleter object with a
+ parent while the second constructor constructs an object with a parent
+ and a QAbstractItemModel, \a model.
+
+ \snippet treemodelcompleter/treemodelcompleter.cpp 0
+ \codeline
+ \snippet treemodelcompleter/treemodelcompleter.cpp 1
+
+ The \c separator() function is a getter function that returns the
+ separator string.
+
+ \snippet treemodelcompleter/treemodelcompleter.cpp 2
+
+ As mentioned earlier, the \c splitPath() function is reimplemented because
+ the default implementation is more suited to QDirModel or list models. In
+ order for QCompleter to split the path into a list of strings that are
+ matched at each level, we split it using QString::split() with \c sep as its
+ separator.
+
+ \snippet treemodelcompleter/treemodelcompleter.cpp 3
+
+ The \c pathFromIndex() function returns data for the completionRole() for a
+ tree model. This function is reimplemented as its default implementation is
+ more suitable for list models. If there is no separator, we use
+ \l{QCompleter}'s default implementation, otherwise we use the
+ \l{QStringList::prepend()}{prepend()} function to navigate upwards and
+ accumulate the data. The function then returns a QStringList, \c dataList,
+ using a separator to join objects of different levels.
+
+ \snippet treemodelcompleter/treemodelcompleter.cpp 4
+
+ \section1 MainWindow Class Definition
+
+ The \c MainWindow class is a subclass of QMainWindow and implements five
+ custom slots: \c about(), \c changeCase(), \c changeMode(),
+ \c highlight(), and \c updateContentsLabel().
+
+ \snippet treemodelcompleter/mainwindow.h 0
+
+ In addition, the class has two private functions, \c createMenu() and
+ \c modelFromFile(), as well as private instances of QTreeView, QComboBox,
+ QLabel, \c TreeModelCompleter and QLineEdit.
+
+ \snippet treemodelcompleter/mainwindow.h 1
+
+ \section1 MainWindow Class Implementation
+
+ The \c{MainWindow}'s constructor creates a \c MainWindow object with a
+ parent and initializes the \c completer and \c lineEdit. The
+ \c createMenu() function is invoked to set up the "File" menu and "Help"
+ menu. The \c{completer}'s model is set to the QAbstractItemModel obtained
+ from \c modelFromFile(), and the \l{QCompleter::highlighted()}
+ {highlighted()} signal is connected to \c{MainWindow}'s \c highlight()
+ slot.
+
+ \snippet treemodelcompleter/mainwindow.cpp 0
+
+ The QLabel objects \c modelLabel, \c modeLabel and \c caseLabel are
+ instantiated. Also, the QComboBox objects, \c modeCombo and \c caseCombo,
+ are instantiated and populated. By default, the \c{completer}'s mode is
+ "Filtered Popup" and the case is insensitive.
+
+ \snippet treemodelcompleter/mainwindow.cpp 1
+ \codeline
+ \snippet treemodelcompleter/mainwindow.cpp 2
+
+ We use a QGridLayout to place all the objects in the \c MainWindow.
+
+ \snippet treemodelcompleter/mainwindow.cpp 3
+
+ The \c createMenu() function sets up the QAction objects required and
+ adds them to the "File" menu and "Help" menu. The
+ \l{QAction::triggered()}{triggered()} signals from these actions are
+ connected to their respective slots.
+
+ \snippet treemodelcompleter/mainwindow.cpp 4
+
+ The \c changeMode() function accepts an \a index corresponding to the
+ user's choice of completion mode and changes the \c{completer}'s mode
+ accordingly.
+
+ \snippet treemodelcompleter/mainwindow.cpp 5
+
+ The \c about() function provides a brief description on the Tree Model
+ Completer example.
+
+ \snippet treemodelcompleter/mainwindow.cpp 6
+
+ The \c changeCase() function alternates between \l{Qt::CaseSensitive}
+ {Case Sensitive} and \l{Qt::CaseInsensitive}{Case Insensitive} modes,
+ depending on the value of \a cs.
+
+ \snippet treemodelcompleter/mainwindow.cpp 7
+
+ \section1 \c main() Function
+
+ The \c main() function instantiates \c MainWindow and invokes the
+ \l{QWidget::show()}{show()} function to display it.
+
+ \snippet treemodelcompleter/main.cpp 0
+*/