在 QML 中使用 id 的正确方法是什么

What is the proper way to use ids in QML

我需要在父 qml 中使用我的大部分子 qml children,所以使用别名我现在正在做,但有些我不喜欢调用 login.help.visible太多的点。有人能给我最好的解决方案吗?

这是我的代码

main.qml

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle{
        anchors.fill: parent
        Widget{
            id: login
        }
        MouseArea{
            anchors.fill: parent
            onClicked: login.help.visible = false
            onEntered: {
                login.help.visible = true
                login.progress.visible = true
                ogin.pwd.visible = true
            }
            onExited: {
                login.help.visible = false
                login.progress.visible = false
                ogin.pwd.visible = false
            }
        }
    }
}

Widget.qml

import QtQuick 2.0
import QtQuick.Controls 1.2

Item {
    id: newid
    property alias help: helpid
    property alias progress: ploder
    property alias username: name
    property alias password: pwd
    Help{
        id: helpid
    }
    TextCustom{
        id: name
    }
    TextCustom{
        id: pwd
    }
    progressLoader{
        id: ploder
    }
}

通常,一旦我定义了一个新的 Component,我会通过向用户隐藏所有内容来封装其子项、逻辑和属性,同时公开可自由修改的属性(甚至是属于到我的组件的子项)通过其属性(又名 property 关键字,正确绑定到组件或其子项的目标属性)。

这样,我的组件的子组件就与组件本身的用户很好地隔离了。

下面是一个例子:

// MyComponent.qml

Item {
    property alias B: firstChild.B

    Item {
        id: firstChild
        property int A: 0 // this is hidden to the users of MyComponent...
        property int B: 0 // ... this is not, indeed
    }
}

// AnotherComponent.qml

// the outer Component has the following child
MyComponent {
    B: 3 // directly modifies the property B of firstChild in MyComponent
}