Qt 在页面堆栈的上一页中调用python函数

Qt 在页面堆栈的上一页中调用python函数,qt,qml,sailfish-os,pyotherside,Qt,Qml,Sailfish Os,Pyotherside,我有两个QML硅胶页面,Main.QML和Icon.QML。 Main.qml具有以下分布: import QtQuick 2.0 import Sailfish.Silica 1.0 import io.thp.pyotherside 1.3 Page { SilicaFlickable { id: mainList Button { text: "Stack the next page"

我有两个QML硅胶页面,Main.QML和Icon.QML。
Main.qml具有以下分布:

import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3

Page {
    SilicaFlickable {
        id: mainList
        
        Button {
            text: "Stack the next page"
            onClicked: { // Stack de Icon Page
                pageStack.push(Qt.resolvedUrl("Icon.qml"))
            }
        }
        function reload(){ }
        Python {
           id: py
           Component.onCompleted: { mainList.reload() }
        }
    }
}
我想调用函数
reload()
since图标:

import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3

Page {
    id: iconEditor

    Button {
        onClicked: {
            pageStack.pop()
            pageStack.completeAnimation()
            pageStack.currentPage.mainList.reload() // Fail
        }
    }
}
Main.qml页面堆叠在主体qml文件中,如下所示:

import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3

ApplicationWindow {
    id: root
    Python {
        Component.onCompleted: {
            pageStack.push(Qt.resolvedUrl("Main.qml"))
        }
    }
}
如何调用堆栈上一页上的函数?

该“id”的作用域仅为定义它的.qml,不能(或应该在该作用域之外使用)。如果要公开对象或变量,则必须在文件的顶层创建属性

在这种情况下,解决方案是使用:


请提供一个@eyllanesc我能想到的最简单的例子是我在问题中提出的例子,但如果你想看到完整的例子,这里的链接是1)MRE不应该依赖外部资源,2)MRE有两个特点:最小和可复制,但在你的情况下,它不符合第二个,因此,如果你需要帮助,你必须做一个MRE并将其发布在你的帖子中。请阅读并查看@eyllanesc已编辑的问题,以便在
SilicaFlickable{
之前添加更清晰的MREtry add
属性别名mainList:mainList
。我不知道ID的这种行为,感谢您的回答。
import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.3

Page {
    property alias mainList: mainList

    SilicaFlickable {
        id: mainList
        // ...