2013-02-11 30 views
0

我开始使用qtquick 1.1。我设计了一个主要由路径视图组成的组件。动态更改用作qml项目基础的模型

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 {},因为编译器期望得到“;”代替 {}。为什么是这样?

回答

0

那么我该如何动态地改变PathView中使用的模型 (myModel)?

在发生各个事件时,您可以直接更改为您的视图分配的模型。

例如。假设你想上一些鼠标点击按钮做了这种变化:

onClicked: 
{ 
    pathView.model = myNewModel 
} 

这里,myNewModel是ID为您的新模式,以取代。

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

您能否更清楚地陈述这一部分?