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