2011-08-19 96 views
1

我有一個地圖應用程序和一個子菜單,根據加載的圖層,動態添加的對象(即地圖上的點)添加到子菜單。我可以通過點擊相應的子菜單項來隱藏每個單獨的對象(即一個點)。有什麼辦法來組織子菜單嗎?當有很多點(即100)時,整個子菜單佔據屏幕。我可以添加一個滾動條到子菜單嗎?我查看了文檔,但找不到任何支持此功能的東西。在子菜單qt中創建一個滾動條?

回答

0

就我所知,沒有這種可能性。 也許你不應該爲此使用子菜單,但更喜歡一個菜單條目,顯示你自己的點管理器GUI,它將有一個QListWidget顯示你所有的點數項目。 我知道這個解決方案會打破你的代碼的一個(大?)部分,但我什麼都看不到。

+0

所以基本上創建一個彈出而不是子菜單來管理所有的對象? – jim

+0

是的,這是我會做的。 – Jeannot

0

雖然可以通過繼承QMenu類來創建自定義小部件並從那裏開始,但最好還是尋找一種更好的方式來顯示該信息。您將節省自己的時間,而且用戶不必在小範圍內滾動瀏覽大量項目就會容易得多。

0

我想你可以通過創建和使用你自己的QStyle子類(通過QApplication :: setStyle())得到你想要的效果,並且當StyleHint參數傳入時覆蓋styleHint虛擬方法返回1 SH_Menu_Scrollable。至少,當我創建大型QMenu對象並將它們顯示爲彈出式菜單時,這對我很有用......它也可能適用於附加到菜單欄的QMenus,但我沒有嘗試過。

6

this bug report我能找到,你可以做到以下幾點:

submenu->setStyleSheet("QMenu { menu-scrollable: 1; }"); 

就像一個魅力。

+0

這其實的作用就像魅力! –

+0

這個答案應該被接受爲正確答案! – qurban