QML- QML类型系统 综述

一、概述

在QML文档中定义对象层次结构时可能使用的类型可以来自各种来源。它们可能是:

  • 由QML语言本地提供
  • 通过QML模块通过c++注册
  • QML模块作为QML文档提供

此外,应用程序开发人员可以通过直接注册c++类型或在QML文档中定义可重用组件来提供他们自己的类型,也就是自定义的类型,在c++,或者Qml 里面都可以定义,就像C++ 可以自定义结构体类型那种功能。

无论类型定义来自何处,qml 引擎都将对这些类型的属性和实例强制执行类型安全。

二、基本类型

QML语言内置了对各种基本类型的支持,包括整数、双精度浮点数、字符串和布尔值。对象可以具有这些类型的属性,这些类型的值可以作为参数传递给对象的方法。就比如那种这个帮助文档一看,你就知道这些属性参数值是什么类型的,毕竟 qml 是对强类型语言的。
在这里插入图片描述

有关基本类型的更多信息,请参阅QML基本类型文档。

三、JavaScript类型

QML引擎支持JavaScript对象和数组。任何标准的JavaScript类型都可以使用泛型var类型来创建和存储。

例如,标准的Date和Array类型可用,如下所示:

import QtQuick 2.0

  Item {
    
    
      property var theArray: []
      property var theDate: new Date()

      Component.onCompleted: {
    
    
          for (var i = 0; i < 10; i++)
              theArray.push("Item " + i)
          console.log("There are", theArray.length, "items in the array")
          console.log("The time is", theDate.toUTCString())
      }
}

四、QML对象类型

QML对象类型是一种可以实例化QML对象的类型。QML对象类型派生自 QtObject,由QML模块提供。应用程序可以导入这些模块以使用它们提供的对象类型。QtQuick模块提供了在QML中创建用户界面所需的最常见的对象类型。

最后,每个QML文档都隐式地定义了一个QML对象类型,可以在其他QML文档中重用。这个与自定义模块、控件都有很大关系的,请参阅QML类型系统中关于对象类型的文档。

就像下面这类型,画圈的 Transition 一看就是对象类型。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43680827/article/details/129544398
QML