QML- QML 文档综述
创始人
2025-05-29 09:04:22
0

QML 文档综述

  • 一、概述
  • 二、QML文档的结构
  • 三、通过QML文档定义对象类型
  • 四、资源加载和网络透明性
  • 五、作用范围和命名解决方案

一、概述

QML文档是一个符合QML文档语法的字符串。文档定义了QML对象类型。文档通常从 .qml 文件中加载,这个Qml文件存储在本地或远程,但可以在代码中手动构造。文档定义的对象类型的实例可以使用QML代码中的Component创建,也可以使用c++中的QQmlComponent创建。或者,如果对象类型以特定的类型名显式地向QML类型系统公开,则可以在其他文档的对象声明中直接使用该类型。

文档中可以定义可重用的QML对象类型的能力是允许客户编写模块化、高可读性和可维护性代码的重要推动因素。 显然qml是支持的,这种模块化的工具很像 python 以文件为单位的模块方式引入,qml 也是支持这种功能的。

从Qt 5.4开始,文件扩展名也可以是 “.ui.qml”。QML引擎像处理标准的. QML文件一样处理这些文件,并忽略扩展名的 .ui 部分。

Qt Creator将这些文件作为Qt Quick Designer的UI表单处理。

二、QML文档的结构

QML文档由两个部分组成:import 导入部分和 对象声明部分。

  • 文档中的 import 导入部分包含定义文档可以使用哪些QML对象类型和JavaScript资源的导入语句。

  • 对象声明部分定义了实例化文档定义的对象类型时要创建的对象树。

简单文档的示例如下:

  import QtQuick 2.0Rectangle {width: 300height: 200color: "blue"}

三、通过QML文档定义对象类型

正如前一节所简要描述的,文档隐式定义了QML对象类型。QML的核心原则之一是定义并重用对象类型的能力。这提高了QML代码的可维护性,增加了对象层次结构声明的可读性,并促进了UI定义和逻辑实现之间的分离。

在下面的例子中,客户端开发人员在文件中定义了一个Button类型的文档:

  // Button.qmlimport QtQuick 2.0Rectangle {width: 100; height: 100color: "red"MouseArea {anchors.fill: parentonClicked: console.log("Button clicked!")}}

Button类型可以在应用程序中使用:

  // application.qmlimport QtQuick 2.0Column {Button { width: 50; height: 50 }Button { x: 50; width: 100; height: 50; color: "blue" }Button { width: 50; height: 50; radius: 8 }}

在这里插入图片描述

四、资源加载和网络透明性

重要的是要注意QML是网络透明的。应用程序可以像从本地路径导入文档一样简单地从远程路径导入文档。事实上,任何url属性都可以被分配一个远程或本地url, QML引擎将处理任何涉及的网络通信。

五、作用范围和命名解决方案

文档中的表达式通常涉及对象或对象的属性,由于可能定义多个对象,并且不同的对象可能具有相同名称的属性,因此必须由QML定义一些预定义的符号解析语义。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...