使用 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

要查看配置选项,请使用 qml 命令与 --help 参数一起运行。

当您正在加载的 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 配置提供默认行为:启动时,根 Item 会调整为填充包装的 Window,当用户调整窗口大小时也会如此。另一个 resizeToItem 配置相反:Item 可以通过编程设置自己的大小(例如通过将其自己的 widthheight 属性绑定),包装的 Window 将调整大小以适应(受窗口系统可能施加的任何限制)。您可以使用 -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文件的示例。

import QmlRuntime.Config

Configuration {
    PartialScene {
        itemType: "QQuickItem"
        container: Qt.resolvedUrl("ItemWrapper.qml")
    }
}

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

import QtQuick

Window {
    required property Item containedObject: null
    onContainedObjectChanged: {
        if (containedObject == undefined || containedObject == null) {
            visible = false;
        } else {
            containedObject.parent = contentItem;
            visible = true;
        }
    }
}

创建这些文件后,可以使用qml -c选项并给出包含configuration.qml文件的目录名称,这样就可以指定容器对象的路径了。

$ qml -c simplest mycomponent.qml

qml运行时会直接设置containedObject属性,该属性需要具有该名称;在设置后,Item将被移动到Window并显示。因为此Window是在QML中声明的,所以在你编写自己的包装窗口时,你可以自由添加你喜欢添加的任何附加功能:以定制的方式处理调整大小,或添加在原型设计期间可能有用的功能。

不管在AppConfigLocation中找到什么,你可以使用qml -c选项以给出完整的configuration.qml文件路径,它可以转而指定完整的容器对象路径;因此,这些文件可以放在任何位置。

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

© 2024 Qt公司有限公司。此处包含的文档贡献的版权属于其各自的拥有者。此处的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款授权的。Qt和相应的标志是芬兰的Qt公司和其他国家的商标。所有其他商标均为其各自所有者的财产。