QML 中默认关键字的用途是什么?

问题描述 投票:0回答:3

我正在尝试找出 QML 中的默认关键字是什么。

在此示例中:http://qt-project.org/doc/qt-4.8/declarative-ui-components-tabwidget.html, 它是如何使用的?

因为在示例中它说

TabWidget 的任何子项实际上都会添加到“堆栈”中 项目的子项。

但是在 main.qml 中,矩形被添加为 TabWidget 的子级。

有人可以给我一个清晰的理解吗?

提前致谢。

javascript qt qt4 qml qtquick2
3个回答
3
投票

它基本上是 QML 对象的默认属性。也就是说,当您没有明确指定它时,它将回退到该值。请参阅文档中更详细的解释和示例:

默认属性 对象定义可以有一个默认属性。默认属性是指,如果一个对象是在另一个对象的定义中声明的,但没有将其声明为特定属性的值,则该属性会被赋值。 使用可选的 default 关键字声明属性将其标记为默认属性。例如,假设有一个文件 MyLabel.qml 具有默认属性 someText:

// MyLabel.qml
import QtQuick 2.0

Text {
    default property var someText

    text: "Hello, " + someText.text
}

可以在 MyLabel 对象定义中分配 someText 值,如下所示:

MyLabel {
    Text { text: "world!" }
}

这与以下效果完全相同:

MyLabel {
    someText: Text { text: "world!" }
}

请注意,这在 Qt 4 中也应该与概念大致相同。


0
投票

它用于描述QML对象属性,具体为默认属性


0
投票

除了阅读此处已接受的答案(https://stackoverflow.com/a/23086017/3220983)之外,请注意 Qt 文档中的这段引用:

...子对象可以添加到任何基于 Item 的类型,而无需 显式地将它们添加到 Children 属性中。这是因为 Item 的 default property 是其数据属性,添加到的任何 items 项目的此列表会自动添加到其子项列表中

https://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html#default-properties

因此,通常 Item 的“默认”属性(或由此派生的任何属性)实际上是该对象的“子项”。但是,您可以定义它如何适用于您自己的自定义类型,并将“默认”指向除子级列表之外的其他内容。因此,当在自定义类型的实现中嵌套某些内容时,您将修改其他“默认”属性,而不是添加子对象。

© www.soinside.com 2019 - 2024. All rights reserved.