我有三个QGraphicsView,每个都有一个不同的场景。 我试图在用户滚动其中一个时滚动所有视图。 滚动是由用户在QGraphicsView小部件中拖动来执行的,该小部件调用QGraphicsView :: scrollContentsBy。 (没有滚动条)
我的第一次实施: 来自scrollContentsBy我正在为所有其他视图调用centerOn,但最终会调用scrollContentsBy的递归调用。
我的第二次实施: 从scrollContentsBy我调用滚动所有其他视图但视图没有正确更新(缺少部分场景)。它确实可以正确滚动。
我尝试了不同的版本,但我找不到解决方案。 任何想法都会很棒。
编辑: 我找到了答案,但我需要再等3个小时才能回复我自己的问题:)
答案 0 :(得分:0)
我很高兴事实上我可以回答我自己的问题并与其他人分享答案。 您唯一需要做的就是创建2个滚动条(一个垂直和一个水平)并为所有QGraphicsView实例设置这两个滚动条。当用户拖动一张图片时,所有视图都接收相同的事件,并为每个视图调用scrollContentsBy。 你知道的时候很容易。
m_hScrollBar = new QScrollBar(Qt :: Horizontal);
m_vScrollBar = new QScrollBar(Qt :: Vertical);
m_srcView-> setHorizontalScrollBar(m_hScrollBar);
m_srcView-> setVerticalScrollBar(m_vScrollBar);
m_dstView-> setHorizontalScrollBar(m_hScrollBar);
m_dstView-> setVerticalScrollBar(m_vScrollBar);
m_diffView-> setHorizontalScrollBar(m_hScrollBar);
m_diffView-> setVerticalScrollBar(m_vScrollBar);