1

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

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

然后,我从各个地方在线查看了一堆示例组件定义,它们似乎都Item用作顶级类,然后紧随其后,Rectangle. 包装 a Rectanglein 有什么意义Item?为什么不直接Rectangle用作顶级类呢?

4

2 回答 2

4

从 Qt 文档:

对于创建组件(或显示一个简单的场景),有不同的元素可以用作顶级组件。为了显示一个简单的场景,一个 Rectangle 作为顶级组件可能就足够了。Rectangle、FocusScope、Component、QtObject、Item,是一些常用的元素作为顶级组件。

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

请注意,像Rectangle, TextEdit, Image, ... 这样的 QML 可视项继承自Item. Item对于将项目组合在一起很有用。您可以使用Item创建一个不可见的容器来容纳其他组件。所以它有利于处理孩子和处理焦点宽度和高度等属性。

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

于 2014-08-30T07:30:50.537 回答
1

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

如果您在某个时候开始创建自己的非视觉元素,您将更加欣赏 Item。

于 2014-08-31T16:16:19.000 回答