试着更好地理解Item的用法?

时间:2014-08-30 00:18:04

标签: qt qml qt-quick qquickitem

我正在阅读有关QML的教程,他们已经开始使用Item作为他们创建的每个组件的基础,在本教程的第一部分使用Rectangle之后。

问题是,color似乎不是Item上的有效属性。我不明白为什么。

然后,我从各个地方在线查看了一堆示例组件定义,他们似乎都使用Item作为顶级类,然后立即使用Rectangle 。在Rectangle中包裹Item的重点是什么?为什么不使用Rectangle作为顶级类?

2 个答案:

答案 0 :(得分:4)

来自Qt文档:

  

用于创建组件(或显示简单场景),有   可以用作顶级组件的不同元素。至   显示一个简单的场景,一个Rectangle作为顶级组件   满足。 Rectangle,FocusScope,Component,QtObject,Item,是其中的一部分   常用元素作为顶级组件。

因此,您可以将任何元素作为顶级组件。

请注意,RectangleTextEditImage等QML可视项目从Item继承。 Item对于将项目分组在一起非常有用。您可以使用Item创建一个隐藏容器来容纳其他组件。因此,它有助于处理儿童和处理属性,如焦点宽度和高度。

我认为将Item作为顶级组件就像拥有一个用于制作任意QML组件的模板一样。当您的自定义组件加载到另一个QML场景时,该组件将保留顶级组件的属性。因此,您可以将Item等一般和非可视元素作为顶级项目,并公开任意属性。

答案 1 :(得分:1)

您可以将Item视为非视觉矩形,这对于系统绘制来说更容易,更快,因为没有任何东西可以绘制。你是否使用Item或Rectangle作为顶级元素并没有太大的区别 - 这是一个很好的编程习惯,不使用比你需要的资源更多的资源。

如果你在某个时候开始创建自己的非视觉元素,你会更喜欢Item。