动态更改用作qml项目基础的模型

时间:2013-02-11 15:42:45

标签: qml qt-quick

我开始使用qtquick 1.1。我设计了一个主要由路径视图组成的组件。

Rectangle {
    id: pathViewElement

    PathView {
        id: pathView
        pathItemCount: 4
        preferredHighlightBegin: 0.5
        preferredHighlightEnd: 0.5
        highlightRangeMode: PathView.StrictlyEnforceRange
        model: myModel
        delegate: Item {
            width: valueText.width
            height: 50
            scale: 1.0-2*Math.abs(pathViewElement.width/2-(x+width/2)) / pathViewElement.width
            opacity: scale
            smooth: true
            Text {
                id: valueText
                anchors.centerIn: parent
                text: myModel.value
                font.pointSize: 35
            }
        }
        path: Path {
            startX: 0; startY: 25
            PathLine { x: pathViewElement.width; y: 25;}
        }
    }
}

此PathView正在使用名为myModel的模型。哪个可能位于任何其他文件中。

现在的问题如下: 我使用相同的组件来更改不同的值。这些值中的每一个都带有另一个QML ListModel。 那么如何动态更改PathView(myModel)中使用的模型?

此外,在创建PathView时,我可以使用

静态设置模型
model: MyListModel{}

其中MyListModel是仅由ListModel {}声明组成的qmlFile。但是当我从第三个文件中动态创建PathView时,比如MyApplication.qml我无法设置pathViewElement.model:MyListModel {},因为编译器期望“;”代替 {}。这是为什么?

1 个答案:

答案 0 :(得分:0)

  

那么如何动态更改PathView中使用的模型呢?   (基于myModel)?

在发生相应事件时,您可以直接更改为视图指定的模型。

例如。假设您希望在单击鼠标按钮时完成此更改:

onClicked:
{
   pathView.model = myNewModel
}

此处,myNewModel是要替换的新模型的ID。

  

但是当我从第三个文件中动态创建PathView时,   说MyApplication.qml我无法设置pathViewElement.model:   MyListModel {}作为编译器期待“;”代替 {}。为什么是   此?

你能更明确地说明这部分吗?