>我有一个包含框架的屏幕(作为一个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 而不是为每个小部件设置可见性?
StackView
,如果您想在小部件之间具有完全导航功能。另一种方法是使用ListView
或其他视图Item
每次将显示一个委托。
我通过使用加载器并发送字符串以及从 c++ 文件到 qml 的路径来做到这一点。
但是我有一个问题 - 我需要从屏幕触发切换小部件内的功能。Widget 类的实例在 MyScreen 中不可见,因此我无法使用连接。
我可以通过对包含源路径的字符串发出更改来重新加载 qml,但我必须执行两次 - 使用空字符串和正确的字符串(之前已设置) - 否则 qml 将不会重新加载。这不是最好的解决方案,因为在这种情况下,我只能"访问"构造函数 - 它将在 qml 重新加载后调用。我可以使用这种方法,但也许可以用更好的方式做到这一点。