【发布时间】:2020-11-23 15:40:52
【问题描述】:
当用户单击test1.qml 内的按钮时,我正在尝试打开test2.qml 文件。
我可以使用 qml StackLayout、Static Loading 文件和使用 qml Loader 来做到这一点。
// main.qml
Window {
width: 400
height: 400
StackLayout {
id: myStack
anchors.fill: parent
Test1 {}
Test2 {}
}
}
// Test1.qml
Item {
width: 400
height: 400
Button {
text: "Move Test2"
onClicked: {
myStack.currentIndex = 1 // Move to page 2
}
}
}
// Test2.qml
Item {
width: 400
height: 400
Button {
text: "Move Test1"
onClicked: {
myStack.currentIndex = 0 // Move to page 1
}
}
}
但是有没有一种方法可以在不使用 StackLayout 或 Loader 甚至静态包含文件并设置可见性的情况下从另一个 QML 文件打开 .qml 文件?
有没有办法可以使用 QT Quick C++ API 或直接从 QML 加载文件?
【问题讨论】:
-
"或直接来自 QML" -- 不清楚这意味着什么。
StackLayout和Loader都是直接加载其他组件的 QML 方式。您到底在寻找什么? -
也许您正在寻找 dynamically 从 JS 代码创建对象?
-
如果您使用堆栈布局,则很少有限制,例如堆栈中加载的视图无法查看全屏或超出其父级堆栈布局的范围。同样使用加载器并设置可见性,代码不可读。我可以在运行时使用加载器和加载视图。但在我们有任何其他选择之前,它也不能令人信服。
标签: c++ qt qml qtquick2 qt-quick