如何在 qgraphicsview 中进行非平滑/逐步 scolling
Posted
技术标签:
【中文标题】如何在 qgraphicsview 中进行非平滑/逐步 scolling【英文标题】:How to make non-smooth / stepwise scolling in a qgraphicsview 【发布时间】:2011-06-09 07:00:35 【问题描述】:我有一个场景,它的布局基本类似于表格。因此,我希望它像表格一样滚动......一次一行或一列。具体来说,左上可见项目的左上角应位于视口的左上角,除非滚动条处于最大值(在这种情况下,它正好在视图中的底部/右侧项目)。按箭头键应显示该方向的下一行或下一列。
通常这很容易通过继承 QAbstractScrollArea 并根据需要进行设置来实现,但 QGraphicsView 已经这样做了。有没有人能想出一个聪明的方法来达到这个效果?
【问题讨论】:
【参考方案1】:只需覆盖QGraphicsScene::keyPressEvent
和...
您必须在表格的末端禁用此移动,但这听起来比您最初想象的要简单得多
编辑
重载QGraphicsView::scrollContentsBy
来处理滚动条的移动。您可以存储 dx 和 dy 参数,并且仅在该值大于单元格大小时滚动移动
【讨论】:
这将负责使用箭头键滚动,但在使用滚动条或其他滚动方式时不会。我希望有更好的东西。 我无法调查您的建议,但我认为很难使其在滚动条和所有内容上直观地正确工作。我可能会尝试将视图简单地包装在一个新的滚动区域中,并处理其中的滚动。以上是关于如何在 qgraphicsview 中进行非平滑/逐步 scolling的主要内容,如果未能解决你的问题,请参考以下文章
如何在 QGraphicsView::Scale 之后调整 QGraphicsView 的大小
如何在 QT 中的 QgraphicsView 中保持图像原始