LINUX.ORG.RU

Qml Добавить элемент в список

 , ,


0

1

Доброго времени суток! Необходимо реализовать в QML дерево, в которое можно было бы добавлять элементы и сворачивать его. Попробовал делать так - беру структуру типа ListView :


    ListView {
        id: taskList
        anchors.fill: parent
        model: taskModel
        delegate: taskDelegate
        focus: true
    }

Вложенность имитируется за счет отступов текста. Сам список представляет собой QStingList, заполняется в main

    QStandardItemModel* tree = new QStandardItemModel();
    QList<QStandardItem*> firstLevel;
    firstLevel << new QStandardItem("0");
    firstLevel << new QStandardItem("1");
    firstLevel << new QStandardItem("2");
    QList<QStandardItem*> secondLevelA;
    secondLevelA << new QStandardItem("3");
    secondLevelA << new QStandardItem("4");
    QList<QStandardItem*> secondLevelB;
    secondLevelB << new QStandardItem("5");
    secondLevelB << new QStandardItem("6");
    secondLevelB << new QStandardItem("7");
    QList<QStandardItem*> thirdLevel;
    thirdLevel << new QStandardItem("8");
    thirdLevel << new QStandardItem("9");
    thirdLevel << new QStandardItem("10");
    secondLevelA[1]->appendColumn(thirdLevel);
    firstLevel[0]->appendColumn(secondLevelA);
    firstLevel[2]->appendColumn(secondLevelB);
    tree->appendColumn(firstLevel);
    TaskTree *taskTree = new TaskTree(tree);
    taskTree->setRootContext(viewer.rootContext());
    viewer.rootContext()->setContextProperty("taskTree", taskTree);

    QStringList taskIdsList = taskTree->toPlainList();
    viewer.rootContext()->setContextProperty("taskModel", QVariant::fromValue(taskIdsList));

    viewer.setMainQmlFile(QStringLiteral("qml/organizer/main.qml"));
    viewer.showExpanded();

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


Я для таких целей использую QAbstractListModel. Если будете использовать — не забудьте про beginInsertRows()/endInsertRows() при добавлении элементов.

age
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.