加载占位符数据

Qt 设计工作室支持视图、模型和委托,因此当您添加一个网格视图、列表视图或路径视图组件时,List Model 和委托组件将自动添加。

但是,缺少的应用程序上下文提出了一个挑战。在 C++ 中定义的具体模型是最明显的例子。通常,上下文缺少简单的属性,这些属性要么在 C++ 中定义,要么在其他组件文件中定义。一个典型的例子是使用其父组件属性的组件,例如 parent.width

使用虚拟模型

如果您在 2D 视图中打开一个引用 C++ 模型的文件,您在其中看不到任何内容。如果模型中的数据是从互联网上获取的,您无法控制它。为了获取可靠的数据,引入了“虚拟数据”。

例如,以下代码片段描述了包含 ListView 的文件 example.qml,该 ListView 反而又指定了 C++ 模型

ListView {
    model: dataModel
    delegate: ContactDelegate {
        name: name
    }
}

在项目的根目录下创建一个名为 dummydata 的目录,以便它不会被部署到设备。在 dummydata 目录中,创建一个与 model 的值相同的文件 (.qml)

qml/exampleapp/example.qml
dummydata/dataModel.qml

然后创建包含虚拟数据的 dataModel.qml 文件

import QtQuick 2.0

ListModel {
     ListElement {
         name: "Ariane"
     }
     ListElement {
         name: "Bella"
     }
     ListElement {
         name: "Corinna"
     }
}

创建虚拟上下文

以下示例显示了一个常见的模式

Item {
    width: parent.width
    height: parent.height
}

这对于应用程序来说效果很好,但是 2D 视图显示了一个零尺寸的组件。打开的文件没有父组件,因为缺少上下文。为了解决缺少上下文的问题,引入了“虚拟上下文”的概念。如果您将与应用程序相同的文件名(此处为 example.qml)放置在 dummydata/context 目录中,您可以伪造一个父上下文

import QtQuick 2.0
import QmlDesigner 1.0

DummyContextObject {
    parent: Item {
        width: 640
        height: 300
    }
}

适用于某些 Qt 许可证。
了解更多。