试图更好地理解 Item 的用法?
Posted
技术标签:
【中文标题】试图更好地理解 Item 的用法?【英文标题】:Trying to understand usage of Item a bit better? 【发布时间】:2014-08-30 00:18:03 【问题描述】:我正在阅读有关 QML 的教程,在教程的第一部分使用 Rectangle
之后,他们已经开始使用 Item 作为他们创建的每个组件的基础。
问题是,color
似乎不是 Item 的有效属性。我不明白为什么。
然后,我从各个地方在线查看了一堆示例组件定义,它们似乎都使用Item
作为***类,然后紧随其后的是Rectangle
。在Item
中包装Rectangle
有什么意义?为什么不直接使用Rectangle
作为***类?
【问题讨论】:
您应该将Item
视为所有其他组件的基类。所有其他 QtQuick 类型(目前除了 windows)都派生自 Item(C++ 端的 QQuickItem)。它没有color
,因为它没有实现任何形状。一种未成型的物质。
【参考方案1】:
来自 Qt 文档:
对于创建组件(或显示一个简单的场景),有 可以用作***组件的不同元素。到 显示一个简单的场景,一个 Rectangle 作为顶层组件可以 够了。 Rectangle,FocusScope,Component,QtObject,Item,是一些 常用的元素作为***组件。
因此您可以将任何元素作为***组件。
请注意,QML 视觉项目如 Rectangle
、TextEdit
、Image
、... 继承自 Item
。 Item
可用于将项目组合在一起。您可以使用Item
创建一个不可见的容器来容纳其他组件。所以它有利于处理孩子和处理焦点宽度和高度等属性。
我认为拥有Item
作为***组件就像拥有一个用于制作任意QML 组件的模板。当您的自定义组件被加载到另一个 QML 场景中时,该组件将保留***组件的属性。因此,您可以将像 Item
这样的通用和非可视元素作为***项目并公开任意属性。
【讨论】:
【参考方案2】:您可以将 Item 视为一个非可视的 Rectangle,它更容易和更快地让系统绘制,因为没有任何东西可以绘制。使用 Item 还是 Rectangle 作为***元素并没有太大的区别 - 不使用超出您需要的资源是一种很好的编程习惯。
如果您在某个时候开始创建自己的非视觉元素,您会更喜欢 Item。
【讨论】:
最后一句话结束了。以上是关于试图更好地理解 Item 的用法?的主要内容,如果未能解决你的问题,请参考以下文章