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

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

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

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

要加载一个.qml文件,请在命令提示符下提供文件路径:

$ qml myqmlfile.qml

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

当你在加载的QML文件中的根对象是Item而不是Window时,它需要被包裹在一个Window中才能显示。在这项工作待定时,已经加载的顶层对象由一个PartialScene对象表示。qml工具随后加载额外的QML文件来决定下一步该做什么:一个是配置文件,指定了将PartialScene包裹在哪种容器中。PartialScene.container属性提供了一个指向容器组件的QML源代码的URL,通常应该声明一个Window来包裹首先加载的Item。因此,将Item包裹到Window中的过程是可编程的;默认情况下,这两个额外的QML文件是从qml可执行文件内部的资源中加载的。你可以使用--list-conf命令列出可用的配置:

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

default 配置提供了默认行为:根项目将在启动时以及用户调整窗口大小时调整大小以填充包装窗口。另一种 resizeToItem 配置则相反:项目可以通过编程方式设置自己的大小(例如通过创建与其自己的 widthheight 属性的绑定),并且包装窗口将调整大小以适应(受窗口系统可能施加的任何限制)。您可以使用 -c--config 选项选择其中一种:

$ qml -c resizeToItem selfResizingItem.qml

可以通过在QStandardPaths::AppConfigLocation中创建配置目录来添加额外的配置,每个目录中包含两个QML文件:一个名为configuration.qml的配置文件,以及一个声明Item包装器的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.qmlcontainer属性可以指向它:

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

$ qml -c simplest mycomponent.qml

qml 运行时将直接设置 containedObject 属性,该属性必须具有该名称;当它被设置时,Item 将被重新分配到 Window 并显示。由于这个 Window 是在 QML 中声明的,当你编写自己的包装窗口时,你可以自由添加任何你认为有用的附加功能:以自定义方式处理调整大小,或添加在原型设计期间可能对你有用的功能。

无论AppConfigLocation中发现了什么,您也可以使用qml -c选项,提供configuration.qml文件的完整路径,并且它可以依次指定容器对象的完整路径;因此这些文件可以位于任何位置。

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