PyQt5 关闭视图(QGraphicsView)滚动条

PyQt5中的QGraphics View小于场景Scene时,会出现ScrollBar滚动条。
在某些场景下我们是不需要滚动条出现,比如:带有move功能的工具时,仅仅需要移动scene中的Item即可。

1. 关闭滚动条的显示

首先,掩耳盗铃。针对上述问题,滚动条依然和鼠标滚轮相关,但是它看不见了,大不了不用滚轮。

# 设置滚动步进,无用
# self.view.horizontalScrollBar().setSingleStep(0)
# self.view.verticalScrollBar().setSingleStep(0)

# 关闭滚动条的显示
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setVerticalScroll
### PyQt QGraphicsView 使用教程 #### 创建基本图形视图框架 为了构建一个基于 `QGraphicsView` 的应用程序,在主窗口或相应的 `QWidget` 中初始化 `QGraphicsScene` 和 `QGraphicsView` 是必要的。这二者分别作为图形项的容器以及这些项目的可视化窗口[^1]。 ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QGraphicsEllipseItem class MainWindow(QMainWindow): def __init__(self): super().__init__() scene = QGraphicsScene(self) view = QGraphicsView(scene, self) # 设置中心部件为中心窗口的小部件,这里设置为view self.setCentralWidget(view) ``` #### 添加图形项目至场景 一旦有了 `QGraphicsScene` 实例,就可以向其添加各种类型的图形对象,比如椭圆形。通过创建 `QGraphicsEllipseItem` 并将其加入到之前定义好的 `scene` 对象中实现这一点。 ```python def setup_scene(self): ellipse_item = QGraphicsEllipseItem(0, 0, 80, 40) # 定义椭圆的位置和大小 brush = QtGui.QBrush(QtCore.Qt.red) # 设定画刷颜色 pen = QtGui.QPen(QtCore.Qt.black) # 设定轮廓线的颜色 ellipse_item.setBrush(brush) # 应用画刷给椭圆填充颜色 ellipse_item.setPen(pen) # 给椭圆设定边框线条样式 self.scene.addItem(ellipse_item) # 将椭圆添加到场景里 ``` #### 缩放和平移功能 对于更复杂的交互需求,如缩放和平移,可以利用 `QGraphicsView.scale()` 方法来调整视图的比例尺而不改变实际场景尺寸;另外还可以重写鼠标事件处理程序来自定义平移行为[^3]。 ```python def wheelEvent(self, event): # 处理滚轮事件以支持缩放 zoom_in_factor = 1.25 # 放大因子 zoom_out_factor = 1 / zoom_in_factor # 缩小因子 if event.angleDelta().y() > 0: scale_factor = zoom_in_factor # 如果向上滚动,则放大 else: scale_factor = zoom_out_factor # 否则缩小 self.view.scale(scale_factor, scale_factor) # 执行缩放操作 ```
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值