向单个 XmlListModel 项添加函数

Add function to individual XmlListModel items

我是 QML 和 Qt Quick 的新手,想知道如何向 XmlListModel 中的每个单独项目添加功能。

XmlListModel {
  id: books
  source: "Books.xml"
  query: "/books"
  XmlRole { name: "price"; query: "@price/string()" }
}

假设价格以美分为单位,我想将每个价格乘以 100。在另一种编程语言中,我会在 Book class 上添加一个 getPrice() 函数,但是我无权访问此处的各个元素。我可以使用索引参数将它添加到 XmlListModel,但我觉得它属于单个图书项目,不是吗?

在上面的代码中,您只是定义了模型和角色来获取数据,而不是实际数据。但是您可以访问数据本身和数据项,特别是在 delegate 中,例如:

ListView {
    id: listView
    anchors.fill: parent
    function getPrice(value) {
        return value * 100;
    }
    model: books
    delegate: Row {
        height: 30
        width: parent.width
        Text { text: listView.getPrice(price) }
    }
}