QML中的'this'关键字是什么?

Jiu*_*Jiu 6 qt qml qt5

Item {
    id: test
    Component.onCompleted: console.log("this is ", this, test)
}
Run Code Online (Sandbox Code Playgroud)

上面的代码输出显示了与Item相同的指针,那么thisQML中的关键字是什么?这是最近的QML组件的指针,可以使用id吗?

eyl*_*esc 18

this 是一个引用QML对象的属性,但其范围是本地的,不会达到子项的范围.

代替:

object可以id从声明它的组件范围内的任何地方引用.因此,标识值在其组件范围内必须始终是唯一的.

例如:在下面的代码中,观察到第二个Item中的this指的是item2而不是item1.

Item{
    id: item1
    Component.onCompleted: {
        console.log("item1")
        console.log(this === item1)
        console.log(this === item2)
    }

    Item{
        id: item2
        Component.onCompleted: {
            console.log("item2")
            console.log(this === item1)
            console.log(this === item2)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

qml: item1
qml: true
qml: false
qml: item2
qml: false
qml: true
Run Code Online (Sandbox Code Playgroud)

  • @Jiu实际上Qt中没有信息,这是javascript的一个特征:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this. (2认同)
  • 他们确实提到了这一点,但是错误的:http://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html => 最后一小节。然而,他们的示例中“不应该工作”的部分工作正常。您只需要看到函数“mouseAreaClicked”被发现 - 因此它需要位于文件根节点中,或者您需要从“MouseArea”将其引用为“parent.mouseAreaClicked”。 (2认同)