0

我有三个 QGraphicsView ,每个都有不同的场景。当用户滚动其中一个视图时,我试图滚动所有视图。滚动是由用户在调用 QGraphicsView::scrollContentsBy 的 QGraphicsView 小部件中拖动来执行的。(没有滚动条)

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

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

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

编辑:我找到了答案,但我需要再等 3 个小时才能回答我自己的问题 :)

4

1 回答 1

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);

于 2013-09-28T07:32:34.553 回答