代码之家  ›  专栏  ›  技术社区  ›  Drewen

同时滚动不同的小部件

  •  2
  • Drewen  · 技术社区  · 16 年前

    我在DockWindow中有不同类型的Qwidget:

    • 1 QWT图
    • 1 QWIDGET
    • 3 QLogigsVIEW

    当我放大时,我需要同时用同一个滚动条滚动它们。我知道两种解决方法:

    • 创建一个滚动条并将其连接到每个小部件。
    • 创建一个滚动区并操作所有小部件。

    最好的解决办法是什么?你知道滚动区教程吗?

    非常感谢

    1 回复  |  直到 16 年前
        1
  •  2
  •   Caleb Huitt - cjhuitt    16 年前

    我会尽量让每一个需要一起滚动的项目都在它自己的内部 QScrollArea . 然后我将把所有这些小部件放到一个小部件中,用 QScrollBar 底部(和/或侧面,如果需要)。

    指定一个内部滚动小部件为“主”,可能是绘图小部件。然后执行以下操作:

    • 设置每一个 qscrollarea公司 的水平滚动条策略,从不显示滚动条。
    • 主人 QScLoad区域 的 horizontalScrollBar() 的 rangeChanged( int min, int max ) 向设置主部件水平的插槽发送信号 QScLabar 到相同的范围。此外,它应该为其他滚动区域小部件的水平滚动条设置相同的范围。
    • 水平的 QScLabar 的 valueChanged( int value ) 信号应连接到每个滚动区域小部件的水平滚动条 setValue( int value ) 狭槽。
    • 如果执行垂直滚动,请对垂直滚动条重复此操作。

    有一个地方我认为这可能会出错,那就是鼠标滚轮滚动。你可以用两种方法来解决这个问题。一种方法是将所有滚动区域连接到一个槽中,当它们的值发生变化时,该槽将触发这些区域,从而更新所有其他滚动条。另一种方法是在这些小部件上安装事件过滤器,或者忽略滚动,或者使用主滚动条处理它。