| /**************************************************************************** |
| ** |
| ** Copyright (C) 2017 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the documentation of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:FDL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU Free Documentation License Usage |
| ** 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. Please review the following information to ensure |
| ** the GNU Free Documentation License version 1.3 requirements |
| ** will be met: https://www.gnu.org/licenses/fdl-1.3.html. |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| /*! |
| \page qmodelindex-and-related-classes-in-qml.html |
| \title QModelIndex and related Classes in QML |
| |
| Since Qt 5.5, QModelIndex and QPersistentModelIndex are exposed in QML as |
| value-based types. Also exposed in a similar fashion are QModelIndexList, |
| QItemSelectionRange and QItemSelection. All objects from these types can |
| be passed back and forth between QML and C++ as \c var properties or plain |
| JavaScript variables. |
| |
| Below you will find an overview of the API exposed to QML for these classes. |
| For more information, refer to their C++ documentation. |
| |
| \note Since all these types are exposed as \l{Q_GADGET}{gadgets}, there are no property |
| change notification signals emitted. Therefore binding to their properties |
| may not give the expected results. This is especially true for QPersistentModelIndex. |
| |
| \section1 QModelIndex and QPersistentModelIndex Types |
| |
| \list |
| \li \b row : int |
| \li \b column : int |
| \li \b parent : QModelIndex |
| \li \b valid : bool |
| \li \b model : QAbstractItemModel |
| \li \b internalId : quint64 |
| \endlist |
| |
| All these properties are read-only, as are their C++ counterparts. |
| |
| \note The usual caveats apply to QModelIndex in QML. If the underlying model changes |
| or gets deleted, it may become dangerous to access its properties. Therefore, you |
| should not store any QModelIndex objects. You can, however, store QPersistentModelIndexe |
| objects in a safe way. |
| |
| \section1 QModelIndexList Type |
| |
| QModelIndexList is exposed in QML as a JavaScript array. Conversions are |
| automatically made from and to C++. In fact, any JavaScript array can be |
| converted back to QModelIndexList, with non-QModelIndex objects replaced by |
| invalid \l{QModelIndex}es. |
| |
| \note QModelIndex to QPersistentModelIndex conversion happens when accessing |
| the array elements because any QModelIndexList property retains reference |
| semantics when exposed this way. |
| |
| \section1 \l QItemSelectionRange Type |
| |
| \list |
| \li \b top : int |
| \li \b left : int |
| \li \b bottom : int |
| \li \b right : int |
| \li \b width : int |
| \li \b height : int |
| \li \b topLeft : QPersistentModelIndex |
| \li \b bottomRight : QPersistentModelIndex |
| \li \b parent : QModelIndex |
| \li \b valid : bool |
| \li \b empty : bool |
| \li \b model : QAbstractItemModel |
| \endlist |
| |
| All these properties are read-only, as are their C++ counterparts. In addition, |
| we also expose the following functions: |
| |
| \list |
| \li bool \b{contains}(QModelIndex \e index) |
| \li bool \b{contains}(int \e row, int \e column, QModelIndex \e parentIndex) |
| \li bool \b{intersects}(QItemSelectionRange \e other) |
| \li QItemSelectionRange \b{intersected}(QItemSelectionRange \e other) |
| \endlist |
| |
| \section1 QItemSelection Type |
| |
| Similarly to QModelIndexList, \l QItemSelection is exposed in QML as a JavaScript |
| array of QItemSelectionRange objects. Conversions are automatically made from and to C++. |
| In fact, any JavaScript array can be converted back to QItemSelection, with |
| non-QItemSelectionRange objects replaced by empty \l {QItemSelectionRange}s. |
| |
| |
| \sa ItemSelectionModel |
| */ |