相关文章推荐
憨厚的充值卡  ·  react ...·  19 小时前    · 
任性的香瓜  ·  react-infinite-scroll- ...·  19 小时前    · 
跑龙套的玉米  ·  Configure the Log ...·  1 月前    · 
不开心的金针菇  ·  Where to find ...·  1 年前    · 

当在QGraohicsView中添加了滚动条可以通过改变滚动条的位置来查看view的不同位置处的元素。那么当改变了查看位置时,我们往往需要获取当前界面显示区域的场景坐标或视图坐标。可以用一下的方式来获取这两种坐标。

 QRect viewport_rect(0,0,use_view->viewport()->width(),use_view->viewport()->height());
 QRectF visable_scene = use_view->mapToScene(viewport_rect).boundingRect();      //可以获取到当前的scene左上角坐标以及大小

visable_scene坐标即为转换后的可视区域的坐标信息,包括起始点x,y坐标和显示的宽、高。

当在QGraohicsView中添加了滚动条可以通过改变滚动条的位置来查看view的不同位置处的元素。那么当改变了查看位置时,我们往往需要获取当前界面显示区域的场景坐标或视图坐标。可以用一下的方式来获取这两种坐标。 QRect viewport_rect(0,0,use_view->viewport()->width(),use_view->viewport()->height()); QRectF visable_scene = use_view->mapToScene(
当在使用QGraphicsView时,创建一个QGraphicsView大小为 800 * 600 ,创建一个QGraphicsScene大小为800 * 1000时,view自动出现了滚动条。 默认的滚动条位置在中间的位置。 设置滚动条位置 pview->verticalScrollBar()->setSliderPosition(0);  pview->horizontal
ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); python3 self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 关闭垂直滚动条 self.setHorizontal
PyQt5中的QGraphics View小于场景Scene时,会出现ScrollBar滚动条。 在某些场景下我们是不需要滚动条出现,比如:带有move功能的工具时,仅仅需要移动scene中的Item即可。 1. 关闭滚动条的显示 首先,掩耳盗铃。针对上述问题,滚动条依然和鼠标滚轮相关,但是它看不见了,大不了不用滚轮。 # 设置滚动步进,无用 # self.view.horizontalScrollBar().setSingleStep(0) # self.view.verticalScrollBar(.
坐标点的显示在右下角。 在Graphics View框架结构主要包含三个类:场景类(QGraphicsScene)、视图类(QGraphicsView)和图元类(QGraphicsItem),统称为“三要素”。这三要素都有自己的坐标系,各个坐标系之间可以相互转换。这次博客主要实现的就是展现鼠标在其中两个坐标系的坐标点。 场景坐标 场景坐标是所有图元的基础坐标系统。场景坐标系统描述了顶层图元的位置,并且构成从视图传播到场景的所有场景事件的基础。每个图元在场景上都有场景坐标和边界矩形。场景坐标
您可以使用QGraphicsView的mapToScene()函数将鼠标的屏幕坐标转换为场景坐标,然后再使用QGraphicsScene的itemAt()函数获取鼠标下的图形项。以下是示例代码: ```python from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene class MyGraphicsView(QGraphicsView): def __init__(self, parent=None): super(MyGraphicsView, self).__init__(parent) self.setScene(QGraphicsScene(self)) self.setMouseTracking(True) def mouseMoveEvent(self, event): pos = event.pos() scene_pos = self.mapToScene(pos) item = self.scene().itemAt(scene_pos, self.transform()) if item is not None: print("Mouse is over item:", item) else: print("Mouse is over scene at position:", scene_pos) 在上述代码中,我们重写了QGraphicsView的mouseMoveEvent()函数来获取鼠标移动事件。我们首先获取鼠标的屏幕坐标,然后使用mapToScene()函数将其转换为场景坐标。然后使用itemAt()函数获取鼠标下的图形项。如果找到了图形项,则打印其信息,否则打印鼠标在场景中的位置