aboutsummaryrefslogtreecommitdiffstats
path: root/doc/src/qml/c++models.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/qml/c++models.qdoc')
-rw-r--r--doc/src/qml/c++models.qdoc208
1 files changed, 0 insertions, 208 deletions
diff --git a/doc/src/qml/c++models.qdoc b/doc/src/qml/c++models.qdoc
deleted file mode 100644
index e2f2f32b5c..0000000000
--- a/doc/src/qml/c++models.qdoc
+++ /dev/null
@@ -1,208 +0,0 @@
-/****************************************************************************
-**
-** 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$
-**
-****************************************************************************/
-/*!
-\page qml-c++models.qdoc
-\title Exposing C++ Models
-\brief exposing Qt C++ models to the runtime
-
-Models can be defined in C++ and then made available to QML. This is useful
-for exposing existing C++ data models or otherwise complex datasets to QML.
-
-A C++ model class can be defined as a \l QStringList, a \l QList<QObject*> or a
-\l QAbstractItemModel. The first two are useful for exposing simpler datasets,
-while QAbstractItemModel provides a more flexible solution for more complex
-models.
-
-
-\section1 QStringList-based Model
-
- A model may be a simple \l QStringList, which provides the contents of the list
- via the \e modelData role.
-
- Here is a ListView with a delegate that references its model item's
- value using the \c modelData role:
-
- \snippet examples/declarative/modelviews/stringlistmodel/view.qml 0
-
- A Qt application can load this QML document and set the value of \c myModel
- to a QStringList:
-
- \snippet examples/declarative/modelviews/stringlistmodel/main.cpp 0
-
- The complete example is available in Qt's \l {declarative/modelviews/stringlistmodel}{examples/declarative/modelviews/stringlistmodel} directory.
-
- \b{Note:} There is no way for the view to know that the contents of a QStringList
- have changed. If the QStringList changes, it will be necessary to reset
- the model by calling QQmlContext::setContextProperty() again.
-
-
-\section1 QObjectList-based model
-
- A list of QObject* values can also be used as a model. A QList<QObject*> provides
- the properties of the objects in the list as roles.
-
- The following application creates a \c DataObject class that with
- Q_PROPERTY values that will be accessible as named roles when a
- QList<DataObject*> is exposed to QML:
-
- \snippet examples/declarative/modelviews/objectlistmodel/dataobject.h 0
- \dots 4
- \snippet examples/declarative/modelviews/objectlistmodel/dataobject.h 1
- \codeline
- \snippet examples/declarative/modelviews/objectlistmodel/main.cpp 0
- \dots
-
- The QObject* is available as the \c modelData property. As a convenience,
- the properties of the object are also made available directly in the
- delegate's context. Here, \c view.qml references the \c DataModel properties in
- the ListView delegate:
-
- \snippet examples/declarative/modelviews/objectlistmodel/view.qml 0
-
- Note the use of the fully qualified access to the \c color property.
- The properties of the object are not replicated in the \c model
- object, since they are easily available via the \c modelData
- object.
-
- The complete example is available in Qt's \l {declarative/modelviews/objectlistmodel}{examples/declarative/modelviews/objectlistmodel} directory.
-
- Note: There is no way for the view to know that the contents of a QList
- have changed. If the QList changes, it will be necessary to reset
- the model by calling QQmlContext::setContextProperty() again.
-
-
-\section1 QAbstractItemModel
-
- A model can be defined by subclassing QAbstractItemModel. This is the
- best approach if you have a more complex model that cannot be supported
- by the other approaches. A QAbstractItemModel can also automatically
- notify a QML view when the model data has changed.
-
- The roles of a QAbstractItemModel subclass can be exposed to QML by calling
- QAbstractItemModel::setRoleNames(). The default role names set by Qt are:
-
- \table
- \header
- \li Qt Role
- \li QML Role Name
- \row
- \li Qt::DisplayRole
- \li display
- \row
- \li Qt::DecorationRole
- \li decoration
- \endtable
-
- Here is an application with a QAbstractListModel subclass named \c AnimalModel
- that has \e type and \e size roles. It calls QAbstractItemModel::setRoleNames() to set the
- role names for accessing the properties via QML:
-
- \snippet examples/declarative/modelviews/abstractitemmodel/model.h 0
- \dots
- \snippet examples/declarative/modelviews/abstractitemmodel/model.h 1
- \dots
- \snippet examples/declarative/modelviews/abstractitemmodel/model.h 2
- \codeline
- \snippet examples/declarative/modelviews/abstractitemmodel/model.cpp 0
- \codeline
- \snippet examples/declarative/modelviews/abstractitemmodel/main.cpp 0
- \dots
-
- This model is displayed by a ListView delegate that accesses the \e type and \e size
- roles:
-
- \snippet examples/declarative/modelviews/abstractitemmodel/view.qml 0
-
- QML views are automatically updated when the model changes. Remember the model
- must follow the standard rules for model changes and notify the view when
- the model has changed by using QAbstractItemModel::dataChanged(),
- QAbstractItemModel::beginInsertRows(), etc. See the \l {Model subclassing reference} for
- more information.
-
- The complete example is available in Qt's \l {declarative/modelviews/abstractitemmodel}{examples/declarative/modelviews/abstractitemmodel} directory.
-
- QAbstractItemModel presents a hierarchy of tables, but the views currently provided by QML
- can only display list data.
- In order to display child lists of a hierarchical model
- the VisualDataModel element provides several properties and functions for use
- with models of type QAbstractItemModel:
-
- \list
- \li \e hasModelChildren role property to determine whether a node has child nodes.
- \li \l VisualDataModel::rootIndex allows the root node to be specified
- \li \l VisualDataModel::modelIndex() returns a QModelIndex which can be assigned to VisualDataModel::rootIndex
- \li \l VisualDataModel::parentModelIndex() returns a QModelIndex which can be assigned to VisualDataModel::rootIndex
- \endlist
-
-\section1 Exposing C++ Data Models to QML
-
-The above examples use QQmlContext::setContextProperty() to set
-model values directly in QML components. An alternative to this is to
-register the C++ model class as a QML type from a QML C++ plugin using
-QQmlExtensionPlugin. This would allow the model classes to be
-created directly as elements within QML:
-
-\table
-\row
-
-\li
-\code
-class MyModelPlugin : public QQmlExtensionPlugin
-{
-public:
- void registerTypes(const char *uri)
- {
- qmlRegisterType<MyModel>(uri, 1, 0,
- "MyModel");
- }
-}
-
-Q_EXPORT_PLUGIN2(mymodelplugin, MyModelPlugin);
-\endcode
-
-\li
-\qml
-MyModel {
- id: myModel
- ListElement { someProperty: "some value" }
-}
-\endqml
-
-\qml
-ListView {
- width: 200; height: 250
- model: myModel
- delegate: Text { text: someProperty }
-}
-\endqml
-
-\endtable
-
-See \l {Tutorial: Writing QML extensions with C++} for details on writing QML C++
-plugins.
-
-*/