2009-12-30 51 views
2

我有不同類型的QWidgets的成DockWindow:同時滾動不同的窗口小部件

  • 1 QWT情節
  • 1 QWidget的
  • 3的QGraphicsView

我需要滾動所有當我放大時,它們同時具有相同的滾動條。我知道兩種解決方案:

  • 創建一個滾動條並將其連接到每個控件。
  • 創建一個scrollArea並操作所有小部件。

什麼是最好的解決方案呢?你知道任何scrollArea教程嗎?

謝謝你這麼多

回答

2

我會盡量做到讓每個需要在演唱會滾動的物品是自己的QScrollArea內。然後,我會將所有這些小部件放入一個小部件中,並在底部(和/或側面,如果需要的話)使用QScrollBar

指定其中一個內部滾動小部件作爲「主」,可能是小部件。然後執行以下操作:

  • 將每個QScrollArea的水平滾動條策略設置爲永不顯示滾動條。
  • 主人QScrollAreahorizontalScrollBar()rangeChanged(int min, int max)發信號給一個插槽,該插槽將主控件的水平線QScrollBar設置爲相同的範圍。另外,它應該爲其他滾動區域控件的水平滾動條設置相同的範圍。
  • 橫向QScrollBarvalueChanged(int value)信號應該連接到每個滾動區域小部件的水平滾動條的setValue(int value)插槽。
  • 重複垂直滾動條,如果垂直滾動。

有一個地方,我認爲這可能會出錯,那是鼠標滾輪滾動。你可以通過幾種方法解決這個問題。一種方法是將所有滾動區域連接到一個插槽,該插槽在其值發生更改時觸發,這會更新所有其他滾動條。另一種方法是在這些小部件上安裝事件過濾器,並忽略滾動或使用主滾動條處理它。

+0

非常感謝你cjhuitt。 – Drewen 2009-12-31 03:03:47

相關問題