From 197f58c187c8807bfc65f507473fd0e5b780c611 Mon Sep 17 00:00:00 2001 From: duxin Date: Wed, 8 Jul 2026 15:24:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20step12=20=E5=9B=BE=E5=83=8F=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=A8=AA=E5=90=91=E6=BB=9A=E5=8A=A8=E6=9D=A1=E8=A2=AB?= =?UTF-8?q?=E6=8C=A4=E5=87=BA=E8=A7=86=E5=8F=A3=E5=BA=95=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: QScrollArea.setWidgetResizable(True) 强制 QLabel 填充视口, 与缩放后 QLabel 的 pixmap 固有尺寸冲突,滚动条布局异常。 修复: 1. setWidgetResizable(False) — QLabel 保持 pixmap 自然尺寸 2. QScrollArea SizePolicy → Expanding×Expanding (受父布局约束) 3. ScrollBarPolicy → AsNeeded (显式设置) 4. QLabel SizePolicy → Ignored (按内容自适应大小) 缩放行为: - 放大超出视口 → 自动出现滚动条 - 缩小/适应窗口 → QLabel 自动缩至 pixmap 尺寸, 无滚动条 --- src/gui/panels/step12_viz_panel.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui/panels/step12_viz_panel.py b/src/gui/panels/step12_viz_panel.py index ed9d03b..ea73a64 100644 --- a/src/gui/panels/step12_viz_panel.py +++ b/src/gui/panels/step12_viz_panel.py @@ -978,12 +978,18 @@ class ImageViewerWidget(QWidget): layout.addLayout(toolbar) self.scroll_area = QScrollArea() - self.scroll_area.setWidgetResizable(True) + # setWidgetResizable(False): QLabel 保持自身 pixmap 固有尺寸, + # 放大时自然超出视口触发滚动条,而非被 QScrollArea 强制压缩 + self.scroll_area.setWidgetResizable(False) + self.scroll_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) + self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.scroll_area.setStyleSheet("background-color: white;") self.image_label = QLabel() self.image_label.setAlignment(Qt.AlignCenter) - self.image_label.setStyleSheet("background-color: white;") + self.image_label.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) + self.image_label.setStyleSheet("background-color: white;") self.scroll_area.setWidget(self.image_label)