2017-07-18 100 views
1

我正在为我需要创建GUI的C++项目工作。我对Qt Widgets有一些经验,但是我们已经决定使用QML来完成这个项目,原因有几个。 GUI非常简单,没有什么奇特的。我们正尝试使用位于标题中的按钮来完成多个视图和导航。多视图QML桌面应用程序的最佳实践?

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

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

现在的问题是,我没有使用QML的经验,所以我想问问指导。哪种控制方式更适合这种情况?我检查过SwipeView,TabControl等,但很容易混淆。如果你能推荐我应该研究哪个领域,我会非常感激。

谢谢

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

+1

很多答案都是这样说的。你也可以看看['StackLayout'](https://doc.qt.io/qt-5/qml-qtquick-layouts-stacklayout.html),或者使用['StackView']进行更多的“参与”实现(https://doc.qt.io/qt-5/qml-qtquick-controls2-stackview.html)。不过,我不认为有任何强烈的反对意见。 – BaCaRoZzo

+0

“最佳实践”是非常主观的,也取决于实际使用情况。只要使用任何最适合你的作品。如果你想要的东西线花式转换,你可能想看看QML必须提供的库存元素或推出自己的,这在QML中很容易做到。 – dtech

回答

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文件,并替换的矩形。