我有一个应用程序,需要在多个可用屏幕之间切换。我正在检查是否可以使用qml中的加载器实现。
我遇到的问题是连接来自加载项的信号。
我在qt文档中使用了一个应用程序示例,并发现qml中的CreateConnection不能有if条件。
我还尝试在函数中进行信号插槽连接,并在加载器的源更改时调用它,但也没有起作用。
Application.qml
import QtQuick 2.0
Item {
width: 100; height: 100
Loader {
id: myLoader
source: "MyItem.qml"
}
Connections {
target: myLoader.item
// here i tried using if (myLoader.item == "qrc:MyItemOne.qml") , but can't use if
onChangeToSecond: {
myLoader.source = "MyItemTwo.qml"
}
onChangeToFirst: {
myLoader.source = "MyItemOne.qml"
}
}
}
MyItemOne.qml
import QtQuick 2.0
Rectangle {
id: myItem
signal changeToSecond()
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: myItem.changeToSecond()
}
}
MyItemTwo.qml
import QtQuick 2.0
Rectangle {
id: myItem
signal changeToFirst()
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: myItem.changeToFirst()
}
}
有人知道如何使用loader来处理这个问题吗?或者说,不应该使用loader来处理这个问题吗?
Loader
。如果您有多个屏幕,请使用StackView
。 - BaCaRoZzo