加载占位符数据
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 许可证。
了解更多。