我正在学习QML教程,在教程的第一部分使用Rectangle
之后,他们已经开始使用Item作为创建的每个组件的基础。
问题是,color
似乎不是Item的有效属性。我不明白为什么。
然后,我从不同的地方在线查看了一堆示例组件定义,它们似乎都使用Item
作为顶级类,然后紧接着使用Rectangle
。将Rectangle
封装在Item
中有什么意义?为什么不直接使用Rectangle
作为顶级类呢?
来自Qt文档:
对于创建组件(或显示简单场景),有可以用作顶级组件的不同元素。到显示一个简单的场景,一个矩形作为顶级组件足够矩形、FocusScope、Component、QtObject、Item是作为顶级组件的常用元素。
因此,您可以将任何元素作为顶级组件。
请注意,QML视觉项目,如Rectangle
、TextEdit
、Image
。。。继承CCD_ 11。Item
可用于将项目分组在一起。可以使用Item
创建一个不可见的容器来容纳其他组件。因此,它便于处理子对象和处理焦点宽度和高度等属性。
我认为将Item
作为顶级组件就像拥有一个用于制作任意QML组件的模板。当您的自定义组件加载到另一个QML场景中时,该组件将保留顶级组件的属性。因此,您可以使用像Item
这样的通用非可视化元素作为顶级项,并公开任意属性。
您可以将Item视为一个非视觉矩形,这对系统来说更容易、更快地绘制,因为没有什么可绘制的。使用Item还是Rectangle作为顶级元素并没有太大区别——不使用超出所需的资源只是一种很好的编程实践。
如果你在某个时候开始创建自己的非视觉元素,你会更加欣赏Item。