2013-09-27 76 views
0

我有三个QGraphicsView每个与不同的场景。 我想滚动所有的意见,当用户滚动其中之一。 滚动是由用户拖动调用QGraphicsView :: scrollContentsBy的QGraphicsView小部件来执行的。 (没有滚动条)如何滚动多个QGraphicsView滚动其中的一个(没有滚动条)

我的第一个实现: 从scrollContentsBy我打电话给所有其他视图的centerOn,但这最终成为scrollContentsBy的递归调用。

我的第二个实现: 从scrollContentsBy我打电话给所有其他视图的滚动,但视图没有正确更新(缺少部分场景)。它确实正确滚动。

我尝试过不同的版本,但我找不到解决方案。 任何想法都会很棒。

编辑: 我找到了答案,但我需要等待3个多小时才回复我的问题:)

回答

0

我很高兴,其实我可以回答我的问题,并与他人分享答案。 你必须做的唯一事情就是创建2个滚动条(一个垂直和一个水平)并为所有QGraphicsView实例设置这两个滚动条。当用户拖动一张图片时,所有视图都会收到相同的事件,并且会为每个视图调用scrollContentsBy。 当你知道的时候很容易。

m_hScrollBar = new QScrollBar(Qt :: Horizo​​ntal);

m_vScrollBar = new QScrollBar(Qt :: Vertical);

m_srcView-> setHorizo​​ntalScrollBar(m_hScrollBar);

m_srcView-> setVerticalScrollBar(m_vScrollBar);

m_dstView-> setHorizo​​ntalScrollBar(m_hScrollBar);

m_dstView-> setVerticalScrollBar(m_vScrollBar);

m_diffView-> setHorizo​​ntalScrollBar(m_hScrollBar);

m_diffView-> setVerticalScrollBar(m_vScrollBar);

相关问题