【问题标题】:dynamically change the model used as base for a qml item动态更改用作 qml 项目基础的模型
【发布时间】:2013-02-11 15:42:45
【问题描述】:

我开始使用 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{} 因为编译器需要一个“;”代替 {}。这是为什么呢?

【问题讨论】:

    标签: qml qt-quick


    【解决方案1】:

    那么如何动态更改 PathView 中使用的模型 (我的模型)?

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

    例如。假设您希望通过单击某个鼠标按钮来完成此更改:

    onClicked:
    {
       pathView.model = myNewModel
    }
    

    这里,myNewModel 是您要替换的新模型的 id。

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

    你能更清楚地说明这部分吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多