QML ListView中的重复部分

时间:2017-08-24 05:00:33

标签: qt qml

我正在编写一个应用程序,它将ListElements插入到C ++代码中的ListModel中,每个插入的ListElement都包含一个'category'属性。我希望能够显示唯一的部分,但QML引擎在ListView中显示重复的部分。

包含ListModel的QML代码包含以下内容:

ApplicationWindow {
//...
ListModel { id: theModel }
ListView { id: theList
    model: theModel

    section.property: "category"
    section.criteria: ViewSection.FullString
    section.delegate: ItemDelegate {
        Rectangle {
            Label {
                text: section
            }
        }
    }
}
//...
}

用于将项目插入'theModel'的C ++代码包含:

QVariantMap temp;
QList<QVariant> listItems;
std::string itemName, itemCategory;
currentNode = rootNode->first_node("item");
while (currentNode) {
    itemName = currentNode->first_attribute("name")->value();
    itemCategory = currentNode->first_attribute("category")->value();
    temp.insert("itemName", QVariant::fromValue(QString(itemName.c_str())));
    temp.insert("price", QVariant::fromValue(qreal(0)));
    temp.insert("category", QVariant::fromValue(QString(itemCategory == "Fruit" ? "Default" : "Other")));
    listItems.append(temp);
    currentNode = currentNode->next_sibling("item");
}
listItems.append(temp);
//Append each list element
for (auto item : listItems) {
    QMetaObject::invokeMethod(
        rootObject,
        "appendListItem",
        Q_ARG(QVariant, QVariant::fromValue(item))
    );
}

有没有办法防止出现在ListView中的重复部分?

0 个答案:

没有答案