QtObject、QObject

image.png

首先,C++ 是一门的语言,QML 也是一门语言。这两种语言都有「类」的概念。
C++ 中称为「class」,QML 中称为「QML Type」。
但是官网 instantiates 这个词就看不懂了,难道说 QtObject 是 QObject 的一个实例?搞不懂!

姑且认为 QML 中的 QtObject 与 C++ 中的 QObject 等价吧!
细细一看,QtObject 有唯一属性 string objectName,QObject 也有唯一属性 QString objectName 。
真的有点等价的感觉。

Window、QQuickWindow

image.png

一句话:QML 中的 Window 等价于 C++ 中的 QQuickWindow。

C++ 的 QQuickWindow

它的继承树是:QObject、QWindow、QQuickWindow。

  • QObject 有1个属性:QString objectName。
  • QWindow 有16个属性:

image.png
QQuickWindow 有三个属性:
image.png
注意,这里的属性都是私有属性,哪怕像 height,也不能直接访问,需要对应的 public 方法 height() .

QML 的 Window

官方文档居然没有 objectName 这个属性,但是可用不报错,搞不懂!
QML 的 Window 属性包含所有 C++ 的 QQuickWindow 属性,并且额外还加了几个:
data : list
注意,不是 QObject,也不是 QtObject,二是 Object。
这个 Object 可以有三种类型:Window、Item、Other Type。