gpt4 book ai didi

c++ - 如何在 qgraphicsview 中进行非平滑/逐步滚动

转载 作者:太空宇宙 更新时间:2023-11-04 14:22:42 28 4
gpt4 key购买 nike

我有一个场景,其布局基本上类似于表格。因此,我希望它像表格一样滚动……一次一行或一列。具体来说,左上角的可见项应该位于视口(viewport)左上角的左上角,除非滚动条处于最大值(在这种情况下,底部/右侧的项目正好在 View 中)。按箭头键应显示该方向的下一行或下一列。

通常这很容易通过继承 QAbstractScrollArea 并适本地设置它来实现,但 QGraphicsView 已经这样做了。有没有人能想出一个巧妙的方法来实现这种效果?

最佳答案

只需覆盖 QGraphicsScene::keyPressEvent 和...

  • 右:移动单元格宽度为正 x
  • 左:移动一个单元格宽度为负x
  • 向上:将单元格高度向负 y 方向移动
  • 向下:在正 y 方向移动单元格高度

你必须在 table 的末端禁用这个移动,但它听起来比你最初想象的要简单得多

编辑
重载QGraphicsView::scrollContentsBy来处理滚动条的移动。您可以存储 dx 和 dy 参数,并且仅当此值大于单元格大小时才滚动移动

关于c++ - 如何在 qgraphicsview 中进行非平滑/逐步滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6289176/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com