2012-09-18 139 views
3

我試圖創建具有將具有以下結構例子的Qt應用程序垂直菜單:Qt的垂直菜單

 
    Language 
     |--> Select 
     |--> English 
     |--> Load 
    Image 
     |--> Save Format 
     |--> JPEG 
     |--> Bitmap 
     |--> JPEG Quality 
     |--> Super High 
     |--> High 
     |--> Low 

等。我最好喜歡使用QMenuBar來實現頂層菜單項目,但也包括所有的子菜單。我還想利用可用於觸發這些不同選項的信號/插槽。有些選項屬於On和Off類型,能夠快速反映所選擇的選項並帶有複選標記,或者是理想選擇。

我可以佈置QMenuBar,並將它放在QVBoxLayout的頂部或底部。但是,我想要做的是將其方向從橫向改爲縱向。我是Qt編程的新手,我的搜索沒有得到正確的函數或Widget來獲得這個功能。

所有的指針和提示讚賞。

這是一張圖片,顯示了我正在努力完成的事情。

menu structure

用戶已經選擇了「傳感器顯示」,並示出的3子選項(壓力,平移&傾斜,輻射),並且還通過默認被移動到其發生的第一個選項(壓力)有2個子選項(開,關)。

子菜單都需要水平顯示,而不是我在上面的文本菜單中描述的「樹視圖」。

問候

回答

2

我已經實現類似於您上面的圖像的菜單。我完全用QML構建它,並集成了C++源代碼中的所有數據模型,信號和插槽。

查看RSS News Example作爲起點。在本例中,它們向您展示瞭如何使用QML構建水平菜單。

的基礎知識,讓您的上述實物模型是:

  • 你需要建三個QML列表視圖(填充在數據模型的列表,格式是如何在列表中的每個元素看起來在一個委託)
  • 邏輯可以用C++或QML編寫,如果你的列表很長很複雜,我建議使用基於狀態的方法。點擊第一列中的一個列表元素將不得不顯示/隱藏/滾動第二個列表等等。

如果將QML列表視圖元素連接到適當的信號和插槽,則可以使用C++完成以上所有操作。

我希望有幫助。

+0

感謝您的回覆,不幸的是我不能在這部分應用程序中使用QML,但我認爲這給我一個關於如何去做的想法。我正在查看QTreeView的子類並使用QAbstractItemModel來實現顯示我的數據的視圖/模型結構。 – Ashwin

+0

很高興我能給你至少一個起點。乾杯。 – stackunderflow