Qt5 更改小部件作为 qml 的一部分



>我有一个包含框架的屏幕(作为一个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 重新加载后调用。我可以使用这种方法,但也许可以用更好的方式做到这一点。

相关内容

  • 没有找到相关文章

最新更新