Spec-Zone.ru › Qt 5.15

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API