滚动其中一个时如何滚动多个QGraphicsView(无滚动条)
Posted
技术标签:
【中文标题】滚动其中一个时如何滚动多个QGraphicsView(无滚动条)【英文标题】:How to scroll multiple QGraphicsView when scrolling one of them (no scrollbars) 【发布时间】:2013-09-27 10:31:36 【问题描述】:我有三个 QGraphicsView ,每个都有不同的场景。 当用户滚动其中一个视图时,我试图滚动所有视图。 滚动是由用户在调用 QGraphicsView::scrollContentsBy 的 QGraphicsView 小部件中拖动来执行的。 (没有滚动条)
我的第一个实现: 从 scrollContentsBy 我为所有其他视图调用 centerOn ,但这最终变成了对 scrollContentsBy 的递归调用。
我的第二个实现: 从 scrollContentsBy 我为所有其他视图调用滚动,但视图未正确更新(缺少场景的一部分)。但它确实可以正确滚动。
我对此尝试了不同的版本,但找不到解决方案。 任何想法都会很棒。
编辑: 我找到了答案,但我需要再等 3 个小时才能回复我自己的问题 :)
【问题讨论】:
【参考方案1】:我很高兴事实上我可以回答自己的问题并与他人分享答案。 您唯一需要做的就是创建 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);
【讨论】:
以上是关于滚动其中一个时如何滚动多个QGraphicsView(无滚动条)的主要内容,如果未能解决你的问题,请参考以下文章