使用QML Runtime 工具制作原型

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 文件,以决定下一步该怎么做:其中一个是配置文件,指定用哪种容器包装PartialScenePartialScene.container 属性给出了一个 URL,指向容器组件的 QML 源代码,通常应声明一个Window ,用它来包装先加载的Item 。因此,将项目包装成窗口的过程是可编程的;默认情况下,这两个附加 QML 文件是从 qml 可执行文件内部的资源加载的。您可以使用--list-conf 命令列出可用的配置:

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

default 配置提供默认行为:在启动时,以及当用户调整窗口大小时,根项目将被调整大小以填充包装窗口。另一种resizeToItem 配置的工作方式与之相反:Item 可以通过编程设置自己的大小(例如,通过创建绑定到自己的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 文件的示例:

import QmlRuntime.Config

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

下面是container 属性可能指向的最简单的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 选项可获得最新列表。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.