Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript更改QML GridView模型_Javascript_Qt_Qml - Fatal编程技术网

通过javascript更改QML GridView模型

通过javascript更改QML GridView模型,javascript,qt,qml,Javascript,Qt,Qml,我有一个ListView和一个GridView。想象一下:第一个视图显示类别,第二个视图显示每个类别中的文章。当ListView的当前索引被javascript更改时,我想动态地更改GridView的数据模型。我们如何做到这一点?您只需分配一个新模型即可。下面是一个基于ListModel文档的示例。此模型在左侧的列表视图中显示模型中的结果。单击代理时,它会将右侧GridView的模型设置到由属性角色定义的列表中 import QtQuick 1.0 Item { width: 600;

我有一个ListView和一个GridView。想象一下:第一个视图显示类别,第二个视图显示每个类别中的文章。当ListView的当前索引被javascript更改时,我想动态地更改GridView的数据模型。我们如何做到这一点?

您只需分配一个新模型即可。下面是一个基于ListModel文档的示例。此模型在左侧的列表视图中显示模型中的结果。单击代理时,它会将右侧GridView的模型设置到由
属性
角色定义的列表中

import QtQuick 1.0

Item {
    width: 600; height: 400

    ListView {
        width: 300; height: 400
        model: fruitModel
        delegate: Text {
            font.pixelSize: 20
            text: name
            width: 300
            MouseArea {
                anchors.fill: parent
                onClicked: grid.model = attributes
            }
        }
    }

    GridView {
        id: grid
        x: 300; width: 300; height: 400
        delegate: Text {
            text: description
            font.pixelSize: 20
        }
    }

    ListModel {
     id: fruitModel

     ListElement {
         name: "Apple"
         cost: 2.45
         attributes: [
             ListElement { description: "Core" },
             ListElement { description: "Deciduous" }
         ]
     }
     ListElement {
         name: "Orange"
         cost: 3.25
         attributes: [
             ListElement { description: "Citrus" }
         ]
     }
     ListElement {
         name: "Banana"
         cost: 1.95
         attributes: [
             ListElement { description: "Tropical" },
             ListElement { description: "Seedless" }
         ]
     }
    }
}

这是嵌套模型的一个示例,但还有其他可能性。例如,如果您从数据库获取数据,可能只需要更改GridView模型使用的查询,而不是设置其他模型。

取决于您的模型。假设
CategoriesModel
具有
categority
角色,并且
ArticlesModel
具有
setcategority
方法:

ListView {
    model: CategoriesModel {}
    delegate: Item {
        MouseArea {
            anchors.fill: parent
            onClicked: {
                grid_view.model.setCategory(model.category)
            }
        }
        // ...
    }
}

GridView {
    id: grid_view
    model: ArticlesModel {}
    // ...
}