Spec-Zone.ru › Qt

Тип QML DelegateModel

Инкапсулирует модель и делегат. Подробнее...

Оператор импорта: import QtQml.Models
  • Список всех членов, включая унаследованные

Свойства

  • count : int
  • делегат : Component
  • filterOnGroup : string
  • groups : список<DelegateModelGroup>
  • items : DelegateModelGroup
  • модель : модель
  • parts : объект
  • сохранённыеЭлементы : DelegateModelGroup
  • rootIndex : QModelIndex

Присоединённые свойства

  • groups : список строк
  • вЭлементы : bool
  • вСохранённыеЭлементы : bool
  • неРазрешён : bool
  • индексЭлементов : int
  • модель : модель
  • индексСохранённыеЭлементы : int

Методы

  • QModelIndex modelIndex(int index)
  • QModelIndex родительскийИндексМодели()

Подробное описание

Тип DelegateModel инкапсулирует модель и делегат, который будет создан для элементов в модели.

Обычно нет необходимости создавать DelegateModel. Однако он может быть полезен для манипулирования и доступа к modelIndex, когда в качестве модели используется подкласс QAbstractItemModel. Также DelegateModel используется совместно с Package, чтобы предоставлять делегаты для нескольких представлений, и с DelegateModelGroup для сортировки и фильтрации элементов делегата.

Пример ниже демонстрирует использование DelegateModel с ListView.

import QtQuick 2.0
import QtQml.Models 2.2

Rectangle {
    width: 200; height: 100

    DelegateModel {
        id: visualModel
        model: ListModel {
            ListElement { name: "Apple" }
            ListElement { name: "Orange" }
        }
        delegate: Rectangle {
            height: 25
            width: 100
            Text { text: "Name: " + name}
        }
    }

    ListView {
        anchors.fill: parent
        model: visualModel
    }
}

Документация по свойствам

количество : int

делегат : Component

Делегат предоставляет шаблон, определяющий каждый элемент, созданный представлением. Индекс доступен в качестве свойства index. Свойства модели также доступны в зависимости от типа модели данных.

фильтрПоГруппе : строка

Это свойство содержит имя группы, используемой для фильтрации модели делегата.

Только элементы, принадлежащие этой группе, видны представлению.

По умолчанию это группа items.

groups : список<DelegateModelGroup>

Это свойство содержит определения групп модели делегата.

Группы определяют подмножество элементов в модели делегата и могут использоваться для фильтрации модели.

Для каждой группы, определенной в DelegateModel, к каждому элементу делегата добавляются два присоединенных свойства. Первое вида DelegateModel.inGroupName указывает, принадлежит ли элемент группе, а второе DelegateModel.groupNameIndex содержит индекс элемента в этой группе.

Следующий пример иллюстрирует использование групп для выбора элементов в модели.

import QtQuick 2.0
import QtQml.Models 2.2

Rectangle {
    width: 200; height: 100

    DelegateModel {
        id: visualModel
        model: ListModel {
            ListElement { name: "Apple" }
            ListElement { name: "Orange" }
        }

        groups: [
            DelegateModelGroup { name: "selected" }
        ]

        delegate: Rectangle {
            id: item
            height: 25
            width: 200
            Text {
                text: {
                    var text = "Name: " + name
                    if (item.DelegateModel.inSelected)
                        text += " (" + item.DelegateModel.selectedIndex + ")"
                    return text;
                }
            }
            MouseArea {
                anchors.fill: parent
                onClicked: item.DelegateModel.inSelected = !item.DelegateModel.inSelected
            }
        }
    }

    ListView {
        anchors.fill: parent
        model: visualModel
    }
}

items : DelegateModelGroup

Это свойство содержит группу по умолчанию, в которую добавляются все новые элементы.

модель : модель

Это свойство содержит модель, предоставляющую данные для DelegateModel.

Модель предоставляет набор данных, используемый для создания элементов для представления. Для больших или динамических наборов данных модель обычно предоставляется объектом модели C++. Объект модели C++ должен быть подклассом QAbstractItemModel или простым списком.

Модели также могут быть созданы непосредственно в QML, например, используя ListModel.

См. также Модели данных.

parts : объект

Свойство parts выбирает DelegateModel, который создает делегаты из указанной части. Используется совместно с типом Package.

Например, следующий код выбирает модель, которая создает делегаты с именем list из Package:

DelegateModel {
    id: visualModel
    delegate: Package {
        Item { Package.name: "list" }
    }
    model: myModel
}

ListView {
    width: 200; height:200
    model: visualModel.parts.list
}

См. также Package.

сохранённыеЭлементы : DelegateModelGroup

Это свойство содержит группу сохранённых элементов модели делегата.

Элементы в этой группе не уничтожаются при освобождении представлением, а вместо этого сохраняются до удаления из группы.

Элемент можно удалить из группы persistedItems, установив свойство DelegateModel.inPersistedItems в false. Если элемент не ссылается на представление в этот момент, он будет уничтожен. Добавление элемента в эту группу не создаст новый экземпляр.

Элементы, возвращаемые функцией QtQml.Models::DelegateModelGroup::create(), автоматически добавляются в эту группу.

rootIndex : QModelIndex

QAbstractItemModel предоставляет иерархическое дерево данных, в то время как QML работает только со списковыми данными. rootIndex позволяет предоставить потомков любого узла в QAbstractItemModel с помощью этой модели.

Это свойство влияет только на модели типа QAbstractItemModel, которые являются иерархическими (например, модель дерева).

Например, вот простой интерактивный файловый браузер. При щелчке имени каталога свойство представления rootIndex устанавливается в узел QModelIndex нажатого каталога, обновляя представление, чтобы показать содержимое нового каталога.

main.cpp:

int main(int argc, char ** argv)
{
    QApplication app(argc, argv);

    QQuickView view;

    QFileSystemModel model;
    view.rootContext()->setContextProperty("fileSystemModel", &model);

    view.setSource(QUrl::fromLocalFile("view.qml"));
    view.show();

    return app.exec();
}

view.qml:

import QtQuick 2.0
import QtQml.Models 2.2

ListView {
    id: view
    width: 300
    height: 400

    model: DelegateModel {
        model: fileSystemModel

        delegate: Rectangle {
            width: 200; height: 25
            Text { text: filePath }

            MouseArea {
                anchors.fill: parent
                onClicked: {
                    if (model.hasModelChildren)
                        view.model.rootIndex = view.model.modelIndex(index)
                }
            }
        }
    }
}

Если модель является подклассом QAbstractItemModel, делегат также может ссылаться на hasModelChildren свойство (необязательно с префиксом model), которое указывает, есть ли у элемента модели делегата дочерние узлы.

См. также modelIndex() и parentModelIndex().

Документация по присоединённым свойствам

DelegateModel.groups : список строк

Это присоединённое свойство содержит имена DelegateModelGroups, к которым принадлежит элемент.

Присоединяется к каждому экземпляру делегата.

DelegateModel.inItems : bool

Это присоединённое свойство указывает, принадлежит ли элемент группе по умолчанию items DelegateModelGroup.

Изменение этого свойства добавит или удалит элемент из группы items.

Присоединяется к каждому экземпляру делегата.

DelegateModel.inPersistedItems : bool

Это присоединённое свойство указывает, принадлежит ли элемент группе persistedItems DelegateModelGroup.

Изменение этого свойства добавит или удалит элемент из группы items. Изменяйте с осторожностью, так как удаление элемента из группы persistedItems уничтожит текущий экземпляр, если он не ссылается на модель.

Присоединяется к каждому экземпляру делегата.

DelegateModel.isUnresolved : bool

Это присоединённое свойство указывает, связан ли визуальный элемент с индексом модели данных. Возвращает true, если элемент не связан с моделью, и false, если связан.

Неразрешённый элемент можно связать с моделью данных, используя функцию DelegateModelGroup::resolve().

Присоединяется к каждому экземпляру делегата.

DelegateModel.itemsIndex : int

Это присоединённое свойство содержит индекс элемента в группе по умолчанию items DelegateModelGroup.

Он прикреплён к каждому экземпляру делегата.

DelegateModel.model : model

Это прикреплённое свойство содержит модель данных, к которой принадлежит этот экземпляр делегата.

Он прикреплён к каждому экземпляру делегата.

DelegateModel.persistedItemsIndex : int

Это прикреплённое свойство содержит индекс элемента в persistedItems DelegateModelGroup.

Он прикреплён к каждому экземпляру делегата.

Документация методов

QModelIndex modelIndex(int index)

QAbstractItemModel предоставляет иерархическое дерево данных, в то время как QML работает только со списочными данными. Эта функция помогает использовать модели дерева в QML.

Возвращает QModelIndex для указанного index. Это значение может быть присвоено rootIndex.

См. также rootIndex.

QModelIndex parentModelIndex()

QAbstractItemModel предоставляет иерархическое дерево данных, в то время как QML работает только со списочными данными. Эта функция помогает использовать модели дерева в QML.

Возвращает QModelIndex для родителя текущего rootIndex. Это значение может быть присвоено rootIndex.

См. также rootIndex.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtqml-models-delegatemodel.html

Spec-Zone.ru

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