2013-02-11 27 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 {}因爲編譯器期待一個「;」代替 {}。爲什麼 這個?

您能否更清楚地陳述這一部分?