我有一个包含框架的屏幕(作为一个qml文件) - 它的内容作为单独的小部件存储在单独的文件中。目前它看起来像:
//screen qml
MyScreen
{
...
//other stuff
Widget1
{
visible: isWidget1Active
...
}
Widget2
{
visible: isWidget2Active
...
}
}
//widget1 qml
Widget1
{
//label
//button
}
//widget2 qml
Widget2
{
//label
//button1
//button2
//button3
}
小部件将覆盖相同的区域(但它们具有不同的内容),我想在同一时间只显示其中一个。 当然,我可以通过检查哪个小部件当前有效来改变可见性,但我不确定这是正确的方法。 我想要支持两个以上的小部件。在这种情况下,屏幕qml会更大,并且会有更多的条件。
是否可以切换小部件qml而不是为每个小部件设置可见性?
答案 0 :(得分:0)
如果您希望在小部件之间使用功能完整导航,则可以使用StackView
。另一种方法是使用ListView
或其他视图Item
,每次都会显示一个代表。
答案 1 :(得分:0)
我是通过使用loader并从c ++文件发送带有qml路径的字符串来实现的。
但是我有一个问题 - 我需要在屏幕上触发切换小部件内的功能。 Widget类的实例在MyScreen中不可见,因此我无法使用连接。
我可以通过对包含源路径的字符串发出更改来重新加载qml,但我必须执行两次 - 使用空字符串和正确的字符串(之前已设置) - 否则qml将不会重新加载。 这不是最好的解决方案,因为在这种情况下我只对构造函数有“访问权限” - 它将在qml重新加载后调用。我可以使用这种方法,但也许可以更好地做到这一点。