滚动其中一个时如何滚动多个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::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);

【讨论】:

以上是关于滚动其中一个时如何滚动多个QGraphicsView(无滚动条)的主要内容,如果未能解决你的问题,请参考以下文章

如何在一个滚动视图中有多个滚动视图

如何在运行时在垂直可滚动页面内动态创建水平可滚动 Gridview

一起滚动多个水平RecyclerView

如何在放大滚动视图Objective-C时聚焦特定视图

如何在 Flutter 中同时滚动多个文本字段

iOS - 具有多个 UITableViews 的水平 UIScrollView