2009-12-30 25 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

相关问题