我会尽量让每一个需要一起滚动的项目都在它自己的内部
QScrollArea
. 然后我将把所有这些小部件放到一个小部件中,用
QScrollBar
底部(和/或侧面,如果需要)。
指定一个内部滚动小部件为“主”,可能是绘图小部件。然后执行以下操作:
-
设置每一个
qscrollarea公司
的水平滚动条策略,从不显示滚动条。
-
主人
QScLoad区域
的
horizontalScrollBar()
的
rangeChanged( int min, int max )
向设置主部件水平的插槽发送信号
QScLabar
到相同的范围。此外,它应该为其他滚动区域小部件的水平滚动条设置相同的范围。
-
水平的
QScLabar
的
valueChanged( int value )
信号应连接到每个滚动区域小部件的水平滚动条
setValue( int value )
狭槽。
-
如果执行垂直滚动,请对垂直滚动条重复此操作。
有一个地方我认为这可能会出错,那就是鼠标滚轮滚动。你可以用两种方法来解决这个问题。一种方法是将所有滚动区域连接到一个槽中,当它们的值发生变化时,该槽将触发这些区域,从而更新所有其他滚动条。另一种方法是在这些小部件上安装事件过滤器,或者忽略滚动,或者使用主滚动条处理它。