我正在编写一个应用程序,它将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中的重复部分?