多视图QML桌面应用的最佳实践?

时间:2017-07-18 12:39:32

标签: qt qml qtquick2

我正在开发一个我需要创建GUI的C ++项目。我对Qt Widgets有一些经验,但出于几个原因,我们决定使用QML来完成这个项目。 GUI很简单,没什么特别的。我们正在尝试使用多个视图,并使用位于标题中的按钮完成导航。

每个按钮都会在前面显示一个视图。请参阅附页截图以获得更好的主意。 enter image description here

值得一提的是,在视图导航期间,实际视图不应被销毁。国家应该得到保护。基本上我尝试重新创建Tab控件,除了按钮位置。

现在的问题是,我之前没有使用QML的经验,而且我想要求指导。哪种控制更适合这种情况?我已经检查过SwipeView,TabControl等,但很容易混淆。如果您可以推荐我应该研究哪个领域,我将非常感激。

由于

P.S。将每个视图的qml放在一个单独的qml文件中会很好,所以我们不会得到一个巨大的qml文件。

1 个答案:

答案 0 :(得分:1)

嗯,这可能就像让四个视图相互叠加并隐藏除活动视图之外的所有视图一样简单。然后有一个按钮组来确定哪些视图处于活动状态:

ApplicationWindow {
  id: window
  visible: true
  width: 640
  height: 480
  ButtonGroup { buttons: buts.children }
  Column {
    Row {
      id: buts
      Button {
        id: v1
        checkable: true
        checked: true
        text: "red view"
      }
      Button {
        id: v2
        checkable: true
        text: "green view"
      }
      Button {
        id: v3
        checkable: true
        text: "blue view"
      }
    }
    Item {
      width: 300
      height: 300
      Rectangle {
        anchors.fill: parent
        color: "red"
        visible: v1.checked
      }
      Rectangle {
        anchors.fill: parent
        color: "green"
        visible: v2.checked
      }
      Rectangle {
        anchors.fill: parent
        color: "blue"
        visible: v3.checked
      }
    }
  }
}

您可以轻松地在单独的QML文件中声明自己的东西,并用它替换矩形。