我正在阅读有关QML的教程,他们已经开始使用Item作为他们创建的每个组件的基础,在本教程的第一部分使用Rectangle
之后。
问题是,color
似乎不是Item上的有效属性。我不明白为什么。
然后,我从各个地方在线查看了一堆示例组件定义,他们似乎都使用Item
作为顶级类,然后立即使用Rectangle
。在Rectangle
中包裹Item
的重点是什么?为什么不使用Rectangle
作为顶级类?
答案 0 :(得分:4)
来自Qt文档:
用于创建组件(或显示简单场景),有 可以用作顶级组件的不同元素。至 显示一个简单的场景,一个Rectangle作为顶级组件 满足。 Rectangle,FocusScope,Component,QtObject,Item,是其中的一部分 常用元素作为顶级组件。
因此,您可以将任何元素作为顶级组件。
请注意,Rectangle
,TextEdit
,Image
等QML可视项目从Item
继承。 Item
对于将项目分组在一起非常有用。您可以使用Item
创建一个隐藏容器来容纳其他组件。因此,它有助于处理儿童和处理属性,如焦点宽度和高度。
我认为将Item
作为顶级组件就像拥有一个用于制作任意QML组件的模板一样。当您的自定义组件加载到另一个QML场景时,该组件将保留顶级组件的属性。因此,您可以将Item
等一般和非可视元素作为顶级项目,并公开任意属性。
答案 1 :(得分:1)
您可以将Item视为非视觉矩形,这对于系统绘制来说更容易,更快,因为没有任何东西可以绘制。你是否使用Item或Rectangle作为顶级元素并没有太大的区别 - 这是一个很好的编程习惯,不使用比你需要的资源更多的资源。
如果你在某个时候开始创建自己的非视觉元素,你会更喜欢Item。