使用 QML 运行时工具进行原型设计#

用于测试和加载 QML 文件的实用工具

Qt 包含了 qml 执行程序,这是一个加载和显示 QML 文档的实用工具。

qml 实用工具主要适用于测试您的 QML 应用程序和组件。要在生产环境中启动 QML 应用程序,通常您需要开发一个自定义的 C++ 应用程序或者在模块中捆绑 QML 文件。有关更多信息,请参阅 部署 QML 应用程序。当给定的根元素为裸露的 Item 时,qml 将自动创建一个窗口来显示场景。值得注意的是,QQmlComponent::create() 不会这样做。因此,当从使用 qml 开发的原型迁移到 C++ 应用程序时,您需要确保根元素是一个窗口,或者在 C++ 中创建一个 QQuickView 来持有根 Item。但在此期间,您可以使用 qml 工具分别加载和测试原型的一部分。

要加载 .qml 文件,请在命令提示符中提供文件路径。

$ qml myqmlfile.qml

要查看配置选项,请使用 qml--help 参数运行。

当您要加载的 QML 文件中的根对象是 Item 而不是 Window 时,需要将其包装在一个 Window 中才能显示。当这项工作正在进行时,已经加载的顶层对象由一个 PartialScene 对象表示。然后,qml 工具将加载额外的 QML 文件以决定下一步操作:一个是配置文件,指定了在哪种容器中包装 PartialScenePartialScene.container 属性提供了一个指向容器组件 QML 源代码的 URL,通常应该声明一个包含所加载的第一个 Item 的窗口。因此,将 Item 包装到窗口中的过程是可编程的;默认情况下,这两个额外的 QML 文件是从 qml 执行程序内的资源加载的。您可以使用 --list-conf 命令列出可用的配置。

$ qml --list-conf
Built-in configurations:
  default
  resizeToItem

默认配置提供默认行为:启动时根项目将被调整大小以填充包装窗口,并且在用户调整窗口大小时也会发生。另外的 resizeToItem 配置工作方式相反:项目可以程序化地设置自己的大小(例如通过将其自己的 widthheight 属性进行绑定),包装窗口将调整大小时予以适配(受制于窗口系统可能施加的任何限制)。您可以使用 -c--config 选项选择其中之一。

$ qml -c resizeToItem selfResizingItem.qml

您可以通过在 QStandardPaths::AppConfigLocation 创建配置目录来添加额外的配置,每个目录中都包含两个 QML 文件:一个名为 configuration.qml 的配置文件,以及一个声明项包装器的 QML 文件,可以命名任意。如果已经完成,则 qml --list-conf 命令还会列出这些额外配置,而 --verbose 选项会展开这些配置,给出那些配置的完整路径以及搜索过的额外位置。

$ qml --list-conf --verbose
Built-in configurations:
  default
  resizeToItem
Other configurations:
  /home/myuser/.config/QtProject/Qml Runtime/simplest
Checked in:
  /home/myuser/.config/QtProject/Qml Runtime
  /etc/xdg/QtProject/Qml Runtime

以下是一个示例 configuration.qml 文件。

以下是最简单的 ItemWrapper.qml,容器属性可以指向。

创建这些文件后,您可以使用 qml -c 选项,提供包含 configuration.qml 文件的目录名称,指定容器对象的路径。

$ qml -c simplest mycomponent.qml

QML 运行时将直接设置 containedObject 属性,它必须具有该名称;一旦设置,项将被重新设置到窗口中并显示。由于此窗口是在 QML 中声明的,因此当您编写自己的包装窗口时,您可以自由添加任何额外的功能:以自定义的方式处理调整大小,或在原型设计期间添加可能有用的功能。

不管在 AppConfigLocation 中发现了什么,您还可以选择使用提供完整路径到 configuration.qml 文件的 qml -c 选项,并可以进一步指定容器对象的完整路径;因此,这些文件可以放置在任何地方。

除了可以在配置文件中声明的功能外,QML 工具还通过命令行选项提供了一些更多功能。使用 --help 选项获取最新的列表。