如何从另一个 Qml 的 Qml 中的属性中获取值?

Posted

技术标签:

【中文标题】如何从另一个 Qml 的 Qml 中的属性中获取值?【英文标题】:How to get value from a property in Qml from another Qml? 【发布时间】:2017-10-05 16:00:35 【问题描述】:

我知道这个问题被问了很多次,但没有一个答案可以帮助我。我有两个 QML 文件。第一个 Qml 文件中有一个地图,当我按下地图时,它会打开一个窗口,其中包含以下代码:

MouseArea
    id: mouseArea
    property var positionRoot: map.toCoordinate(Qt.point(mouseX, mouseY))
    anchors.fill: parent
    onClicked: 
            var component = Qt.createComponent("addAttribute.qml")
            if (component.status === Component.Ready) 
            var dialog = component.createObject(parent,popupType: 1)
            dialog.show()
       
    

窗口有一个labeltextfield和一个button。我想要的是获取我在第一个 QML 文件中创建的 property(positionRoot) 的值。我怎么可能做到?

【问题讨论】:

在第二个窗口中创建与positionRoot相同类型的属性,并在创建时传递值-dialog.positionRoot2 = positionRoot; 【参考方案1】:

感谢@folibis,它成功了。这是需要添加的代码。

MouseArea
        id: mouseArea
        property var positionRoot: map.toCoordinate(Qt.point(mouseX, mouseY))
        anchors.fill: parent
        onClicked: 
                var component = Qt.createComponent("addAttribute.qml")
                if (component.status === Component.Ready) 
                var dialog = component.createObject(parent,popupType: 1)
                dialog.sqlPosition = positionRoot
                dialog.show()
           
        
    

在我的第二个窗口中,我只是创建了一个名为 sqlPosition 的新属性。例如:

Window 
        id: secondWindow
        property var sqlPosition
    

【讨论】:

以上是关于如何从另一个 Qml 的 Qml 中的属性中获取值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 QML 文件调用 QML 文件中定义的 Javascript 函数?

QML , 如何从另一个 qml 访问元素

如何从另一个 QML 访问和控制 ListModel 的内容

如何从另一个线程的 cpp 代码同步调用 qml 信号处理程序?

QT QML - 从另一个类访问 qml 模型

从另一个 QML 文件打开新的 QML 文件