使用QML Runtime 工具进行原型设计

qml 实用程序主要用于测试您的 QML 应用程序和组件。要在生产环境中启动 QML 应用程序,通常需要开发一个自定义的 C++ 应用程序,或者将 QML 文件打包到模块中。有关更多信息,请参阅《部署 QML 应用程序》。

qml 可以原样实例化您提供的任何 QML 类型,即使没有内容可显示也是如此。若要显示以Window 以外的对象作为根对象的 QML 内容,qml 会将该内容封装在Window 中。

因此,在将使用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 配置提供默认行为:在启动时,以及用户调整窗口大小时,根Item都会被调整大小以填满包装Window。 另一种resizeToItem 配置则相反:Item可以通过编程方式设置自身大小(例如通过创建与其width 和height 属性的绑定),而包装窗口将调整大小以适应Item(受窗口系统可能施加的任何限制约束)。您可以通过-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")
    }
}

以下是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 并显示出来。 由于该窗口是在 QML 中声明的,因此在编写自定义包装窗口时,您可以自由添加任何所需的功能:例如以自定义方式处理窗口大小调整,或者添加在原型设计过程中可能觉得有用的功能。

无论在AppConfigLocation 中找到了什么内容,你也可以使用qml -c 选项,并提供configuration.qml 文件的完整路径;该文件进而可以指定容器对象的完整路径;因此这些文件可以位于任何位置。

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

© 2026 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.