Qt 在页面堆栈的上一页中调用python函数
我有两个QML硅胶页面,Main.QML和Icon.QML。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"
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
// ...