2017-07-18 101 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文件,並替換的矩形。