包 QML 类型

指定一组命名项。 更多信息...

导入语句import QtQml.Models

附加属性

详细描述

包类型与 DelegateModel 一起使用,以便将具有共享上下文的代理提供到多个视图中。

包中的任何项目都可以通过 Package.name 附加属性分配一个名称。

以下示例创建一个包含两个命名项的包; listgrid。包中的第三个项目(Rectangle)将其父项设置为它应该出现的代理。这使得一项可以在视图之间移动。

Package {
    Text { id: listDelegate; width: parent.width; height: 25; text: 'Empty'; Package.name: 'list' }
    Text { id: gridDelegate; width: parent.width / 2; height: 50; text: 'Empty'; Package.name: 'grid' }

    Rectangle {
        id: wrapper
        width: parent.width; height: 25
        color: 'lightsteelblue'

        Text { text: display; anchors.centerIn: parent }
        state: root.upTo > index ? 'inGrid' : 'inList'
        states: [
            State {
                name: 'inList'
                ParentChange { target: wrapper; parent: listDelegate }
            },
            State {
                name: 'inGrid'
                ParentChange {
                    target: wrapper; parent: gridDelegate
                    x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height
                }
            }
        ]

        transitions: [
            Transition {
                ParentAnimation {
                    NumberAnimation { properties: 'x,y,width,height'; duration: 300 }
                }
            }
        ]
    }
}

这些命名项由两个引用特殊 DelegateModel::parts 属性的两个视图用作代理。

DelegateModel {
    id: visualModel
    delegate: Delegate {}
    model: myModel
}

ListView {
    id: lv
    height: parent.height/2
    width: parent.width

    model: visualModel.parts.list
}
GridView {
    y: parent.height/2
    height: parent.height/2
    width: parent.width
    cellWidth: width / 2
    cellHeight: 50
    model: visualModel.parts.grid
}

注意:自 2.14 版本起,Packege 是 QtQml.Models 的一部分,并且自 2.0 版本起是 QtQuick 的一部分。自 Qt 5.14 版本起,通过 QtQuick 导入 Package 已被弃用。

另请参阅:Qt Quick 示例 - 视图Qt Qml

附加属性文档

Package.name : string

此附加属性持有包中项的名称。


© 2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档是根据由自由软件基金会发布的 GNU 自由文档许可证 1.3 版本 许可的。Qt 和相关标志是芬兰的 Qt 公司及其在全球的子公司和附属公司的 商标。所有其他商标均为其各自所有者的财产。