QModelIndex и связанные классы в QML
С Qt 5.5, QModelIndex и QPersistentModelIndex экспонируются в QML как типы со значениями. Также аналогичным образом экспонируются QModelIndexList, QItemSelectionRange и QItemSelection. Все объекты этих типов могут передаваться между QML и C++ как var свойства или простые переменные JavaScript.
Ниже представлен обзор API, экспонированного для QML этих классов. Для получения дополнительной информации обратитесь к документации C++.
Примечание: Поскольку все эти типы экспонируются как гаджеты, сигналы уведомления о изменении свойств не излучаются. Поэтому привязка к их свойствам может не дать ожидаемых результатов. Это особенно верно для QPersistentModelIndex.
Типы QModelIndex и QPersistentModelIndex
- row : int
- column : int
- parent : QModelIndex
- valid : bool
- model : QAbstractItemModel
- internalId : quint64
Все эти свойства являются только для чтения, как и их аналоги в C++.
Примечание: Применимы обычные предостережения для QModelIndex в QML. Если базовая модель изменяется или удаляется, обращение к её свойствам может стать небезопасным. Поэтому не следует хранить объекты QModelIndex. Однако вы можете безопасно хранить объекты QPersistentModelIndex.
Тип QModelIndexList
QModelIndexList экспонируется в QML как массив JavaScript. Преобразования автоматически производятся между C++ и QML. Фактически, любой массив JavaScript может быть преобразован обратно в QModelIndexList, при этом объекты, не являющиеся QModelIndex, заменяются недействительными QModelIndex.
Примечание: Преобразование QModelIndex в QPersistentModelIndex происходит при доступе к элементам массива, потому что свойство QModelIndexList сохраняет семантику ссылок при таком экспонировании.
Тип QItemSelectionRange
- top : int
- left : int
- bottom : int
- right : int
- width : int
- height : int
- topLeft : QPersistentModelIndex
- bottomRight : QPersistentModelIndex
- parent : QModelIndex
- valid : bool
- empty : bool
- model : QAbstractItemModel
Все эти свойства являются только для чтения, как и их аналоги в C++. Кроме того, мы также экспонируем следующие функции:
- bool contains(QModelIndex index)
- bool contains(int row, int column, QModelIndex parentIndex)
- bool intersects(QItemSelectionRange other)
- QItemSelectionRange intersected(QItemSelectionRange other)
Тип QItemSelection
Аналогично QModelIndexList, QItemSelection экспонируется в QML как массив JavaScript объектов QItemSelectionRange. Преобразования автоматически производятся между C++ и QML. Фактически, любой массив JavaScript может быть преобразован обратно в QItemSelection, при этом объекты, не являющиеся QItemSelectionRange, заменяются пустыми QItemSelectionRange.
См. также ItemSelectionModel.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qmodelindex-and-related-classes-in-qml.html