view_rect = self.view.contentsRect()
s_x = int(abs(view_rect.width() - self.image_w) / 2)
s_y = int(abs(view_rect.height() - self.image_h) / 2)
self.view.setSceneRect(-s_x, -s_y, view_rect.width(), view_rect.height())
PyQt5中的QGraphics View小于场景Scene时,会出现ScrollBar滚动条。在某些场景下我们是不需要滚动条出现,比如:带有move功能的工具时,仅仅需要移动scene中的Item即可。1. 关闭滚动条的显示首先,掩耳盗铃。针对上述问题,滚动条依然和鼠标滚轮相关,但是它看不见了,大不了不用滚轮。# 设置滚动步进,无用# self.view.horizontalScrollBar().setSingleStep(0)# self.view.verticalScrollBar(.
ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
python3
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 关闭垂直滚动条
self.setHorizontal
当在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
QGraphicsView提供显示QGraphicsScene的功能,它继承自QAbstractScrollArea,因此它还是一个带滚动条的窗口,这样可以实现只场景的一部分。还可以创建多个QGraphicsView来显示同一个QGraphicsScene,类似 QTableView、QTreeView和QListView的显示,官方专业的描述是“多个视图可以观察一个场景”。
2、常用接口
setScene:设置场景QGraphicsScene
show:默认情况下,视图将滚动到场景的中心并显示此
一、Graphics View框架结构的主要特点
(1)在Graphics View框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。
(2) Graphics View支持事件传播体系结构,可以使图元在场景(scene) 中的交互能力提高1倍,图元能够处理键盘事件和鼠标事件。其中,鼠标事件包括鼠标被按下、移动、释放和双击,还可以跟踪鼠标的移动。
(3)在Graphics View框架中,通过二元空间划分树(Binary Space Pritining, BSP) 提供快速的图元
### 回答1:
PyQt5中的QGraphicsView是一个用于显示和编辑图形的小部件。它可以用于创建交互式的图形应用程序,如绘图编辑器和游戏。QGraphicsView提供了一个可滚动的视图窗口,可以在其中显示QGraphicsScene中的图形项。您可以使用QGraphicsView来缩放、平移和旋转图形项,以及捕获鼠标和键盘事件。要使用QGraphicsView,您需要创建一个QGraphicsScene,并将其设置为QGraphicsView的场景。然后,您可以将图形项添加到场景中,并使用QGraphicsView显示它们。
### 回答2:
PyQt5是一个强大的工具包,其中包括了许多图形界面相关的模块。其中,QGraphicsView是PyQt5中的一个非常常用的图形视图框架,它提供了一个可以展示并且编辑图形呈现的服务。QGraphicsView从图形界面的一个角度来说,它是用来画出2D的图形,这些图形可以是由PyQt5包中图形元素组成的。
使用QGraphicsView的第一步就是创建一个QGraphicsScene对象并将其设置为QGraphicsView的画布。QGraphicsScene对象类似于一个容器,它可以用于存储和组织QGraphicsItem和QGraphicsWidget。QGraphicsItem是最基本的图形元素,它可以让我们向QGraphicsScene添加不同类型的图形像素,如折线、矩形、多边形、椭圆等等。
QGraphicsView类提供了一个在场景中浏览这些图形元素的功能。可以通过拖动、选择和缩放的形式查看不同的图形元素。一些常见的操作包括缩放、旋转、移动和变换,这些都是通过QGraphicsView类中的一些方法来实现的。QGraphicsView类其实是将QGraphicsScene的内容呈现到一个窗口,该窗口是由QGraphicsView对象实现。
另外,QGraphicsView类还提供了一些其他常见的操作,如鼠标移动、单击、双击、按下、松开等操作,以便我们响应相应的事件。我们可以通过重写这些方法来实现与场景交互的自定义处理逻辑。
总之,QGraphicsView是一个非常强大的工具,可以提供图形界面上呈现和编辑图形元素的功能。通过掌握QGraphicsView的一些常见操作和方法,我们可以快速地创建出漂亮的图形界面程序,并让它们交互起来。
### 回答3:
PyQt5是Python语言的一个GUI工具包,它使用Qt库开发而成。其中,QGraphicsView是PyQt5的一个组件,它可以用来创建一个可视化的图形界面,显示各种复杂的图形元素,包括线条、矩形、圆形、文本、图片等。
使用QGraphicsView,我们可以轻松创建交互性强、视觉效果好的图形应用程序。以下是关于QGraphicsView的一些具体用法说明:
1. 创建QGraphicsView对象
首先,我们需要导入PyQt5库,并创建一个QGraphicsView对象,来显示我们想要展示的图形元素。例如:
- from PyQt5.QtWidgets import QGraphicsView
- view = QGraphicsView()
2. 添加场景(Scene)
接下来,我们需要创建一个或多个场景(Scene),来放置我们要展示的图形元素。在QGraphicsView中,场景是存放图形项(QGraphicsItem)的容器,可以理解为一个画布。我们可以使用QGraphicsScene类创建一个场景对象,并将其添加到QGraphicsView中。例如:
- from PyQt5.QtWidgets import QGraphicsScene
- scene = QGraphicsScene()
- view.setScene(scene)
3. 添加图形项
在场景中,我们可以添加各种图形项,例如,矩形、椭圆、文本、图片等等。在QGraphicsView中,图形项是指由QGraphicsItem派生出来的类,如QGraphicsRectItem、QGraphicsEllipseItem、QGraphicsTextItem等。我们可以使用这些类来创建图形项,并将它们添加到场景中。例如:
- from PyQt5.QtWidgets import QGraphicsRectItem
- item1 = QGraphicsRectItem(0, 0, 100, 100)
- item2 = QGraphicsRectItem(150, 150, 100, 100)
- scene.addItem(item1)
- scene.addItem(item2)
4. 图形项的属性设置
在添加图形项后,我们可以对其进行属性设置,例如,设置边框线条的颜色、线宽、线型,设置填充的颜色,设置旋转角度、缩放因子等等。例如:
- item1.setPen(QPen(Qt.red, 2, Qt.SolidLine))
- item1.setBrush(QColor(255, 0, 0, 50))
- item1.setRotation(45)
- item2.setScale(0.5)
5. 事件处理
在QGraphicsView中,我们可以通过事件机制来处理用户的交互行为,例如鼠标点击、鼠标移动、键盘事件等等。我们可以重写各种事件函数(例如mousePressEvent、mouseMoveEvent、keyPressEvent等)来实现自己的逻辑。例如:
- def mousePressEvent(self, event):
- item = self.scene().itemAt(event.pos())
- item.setBrush(QColor(0, 255, 0, 50))
以上就是QGraphicsView的使用过程。通过组合使用QGraphicsView、QGraphicsScene和QGraphicsItem,我们可以轻松创建出丰富多彩的图形应用程序。