Pyqt:当可以滚动时,如何将项目始终设置在 QGraphicsView 的中心?
我有一个 QGraphicsView。我添加了一个 QGraphicsScene 并添加了 QPixmap(*.jpeg) 和 QGraphicsEllipseItem(一个圆圈)。 QPixmap 比 QGraphicsView 大得多,因此启用了滚动。问题是 QPixmap 和 QGraphicsEllipseItem 都在移动。但我想要 QGraphicsEllipseItem 在 QGraphicsView 中的固定位置。它应该始终位于 QGraphicsView 的中心。 我怎样才能做到这一点?希望有人能帮忙。
I have a QGraphicsView. To that I added a QGraphicsScene and to that a added an QPixmap(*.jpeg) and QGraphicsEllipseItem(a circle). The QPixmap is much more bigger than the QGraphicsView, so scrolling is enabled. The problem is that both QPixmap and QGraphicsEllipseItem are moving. But I want a fixed position for the QGraphicsEllipseItem in QGraphicsView. It should always be in the center of the QGraphicsView.
How can I do that? Hope someone can help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
为滚动条的滚动信号添加信号处理程序(使用
QAbstractSlider::sliderMoved()
)。然后,您可以查询视图的左/上偏移和大小,并相应地定位圆。请参阅 QAbstractScrollArea 的说明以开始使用。
Add a signal handler for the scroll signal of the scroll bars (use
QAbstractSlider::sliderMoved()
).Then you can query the view for it's left/top offset and size and position the circle accordingly. See the explanation for QAbstractScrollArea to get you started.
如果您子类化
QGraphicsView
,则可以重写scrollContentsBy
方法,以便在滚动区域发生变化时设置椭圆的位置。这是一些非常简单的代码:If you subclass
QGraphicsView
, you can override thescrollContentsBy
method to set the position of the ellipse whenever the scroll area changes. Here's some really minimal code: