2017-07-18 4 views
1

私はGUIを作成する必要があるC++プロジェクトに取り組んでいます。私はQtウィジェットでいくつかの経験を持っていますが、私たちはいくつかの理由からこのプロジェクトで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

まあ、4つのビューをお互いに重ねて表示し、アクティブなビュー以外のすべてを隠すのは簡単です。そして、アクティブである景色のかを決定するためにボタングループを持っている:

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ファイルで独自のものを宣言し、それに長方形を置き換えることができます。

関連する問題