Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在qgraphicsview中进行非平滑/逐步旋转_C++_Qt_Qgraphicsview - Fatal编程技术网

C++ 如何在qgraphicsview中进行非平滑/逐步旋转

C++ 如何在qgraphicsview中进行非平滑/逐步旋转,c++,qt,qgraphicsview,C++,Qt,Qgraphicsview,我有一个场景,基本上有一个桌子一样的布局。因此,我希望它像一张桌子一样滚动。。。一次一行或一列。特别是,左上可见项的左上角应位于视口的左上角,除非滚动条处于最大值(在这种情况下,正是下/右项处于视图中)。按箭头键应显示该方向的下一行或下一列 通常,通过继承QabStretchScrollArea并适当设置它,这是很容易实现的,但QGraphicsView已经做到了这一点。有人能想出一个聪明的方法来达到这个效果吗?只需覆盖qgraphicscene::keyPressEvent和 右:在正x方向

我有一个场景,基本上有一个桌子一样的布局。因此,我希望它像一张桌子一样滚动。。。一次一行或一列。特别是,左上可见项的左上角应位于视口的左上角,除非滚动条处于最大值(在这种情况下,正是下/右项处于视图中)。按箭头键应显示该方向的下一行或下一列


通常,通过继承QabStretchScrollArea并适当设置它,这是很容易实现的,但QGraphicsView已经做到了这一点。有人能想出一个聪明的方法来达到这个效果吗?

只需覆盖
qgraphicscene::keyPressEvent

  • 右:在正x方向移动单元格宽度
  • 左:在负x方向移动单元格宽度
  • 向上:沿负y方向移动单元格高度
  • 向下:以正y方向移动单元格高度
您必须在桌子的末端禁用此移动,但这听起来比您最初想象的要简单得多

编辑

重载
QGraphicsView::scrollContentsBy
以处理滚动条的移动。您可以存储dx和dy参数,并且仅当该值大于用于使用箭头键滚动的单元格大小时才能滚动移动

,但在使用滚动条或其他滚动方式时则不能。我希望有更好的东西。我一直无法研究你的建议,尽管我认为很难让它在滚动条和所有东西上直观地正确工作。我可能会尝试简单地将视图包装在一个新的滚动区域中,并从中处理滚动。