Seitenleiste rollt, statt das QGIS-Fenster zu strecken

Daniel Helbig (LK Meissen) am 14.09.2026: ist die Seitenleiste hoeher als der Bildschirm,
schiebt sie den unteren Rand des QGIS-Fensters ins Unsichtbare. Grund: ein QDockWidget
reicht die Mindesthoehe seines Inhalts an das Hauptfenster weiter.

Der Inhalt haengt jetzt in einer QScrollArea (widgetResizable, kein Rahmen, waagerechter
Balken aus). Damit meldet das Dock nur noch 88 px Mindesthoehe statt 931; der Inhalt bleibt
ueber einen senkrechten Rollbalken erreichbar. Die Mindestbreite wandert auf die Rollflaeche
und bekommt die Balkenbreite aufgeschlagen (278 px), damit nichts angeschnitten wird. Die
Diensteliste gibt sich mit 90 statt 140 px zufrieden -- ihre Mindesthoehe zaehlt in die des
Docks hinein.

Geprueft mit tools/headless_panel_test.py (QGIS 4.2 offscreen, 0 Fehler): Rollflaeche da,
Dock verlangt 88 px bei 931 px Inhalt, Rollbalken wird gebraucht, kein waagerechter Balken.
Der Test laeuft neuerdings auch ohne VLN_TOKEN -- der Online-Teil wird dann uebersprungen,
die Layout-Pruefung nicht.

Closes #1

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
KAI
2026-09-21 08:21:21 +02:00
co-authored by Claude Opus 5
parent 3486d3a74e
commit 3a9075f635
2 changed files with 64 additions and 6 deletions
+33 -3
View File
@@ -21,7 +21,8 @@ QgsApplication.setPluginPath("/Applications/QGIS-final-4_2_0.app/Contents/PlugIn
app.initQgis()
from qgis.PyQt.QtNetwork import QNetworkProxyFactory
QNetworkProxyFactory.setUseSystemConfiguration(False)
from qgis.PyQt.QtCore import QSize
from qgis.PyQt.QtCore import QSize, Qt
from qgis.PyQt.QtWidgets import QScrollArea
from vln_karten.panel import VlnPanel
from vln_karten.api_client import KartenApiClient
@@ -47,6 +48,35 @@ pruefe(panel.login_knopf.isVisible() or not panel.logout_knopf.isVisibleTo(panel
pruefe(not panel.ogc_knopf.isEnabled() and not panel.combo.isEnabled()
and not panel.speichern_knopf.isEnabled(), "Knoepfe und Auswahl gesperrt")
print("== Issue #1: Rollbalken statt Fensterueberlauf ==")
# Ein QDockWidget reicht die Mindesthoehe seines Inhalts ans Hauptfenster weiter. Ohne
# Rollflaeche wuchs QGIS mit der Seitenleiste und schob seinen unteren Rand aus dem
# Bildschirm (Daniel Helbig, LK Meissen, 14.09.2026).
rolle = panel.widget()
pruefe(isinstance(rolle, QScrollArea), "Inhalt sitzt in einer Rollflaeche")
pruefe(rolle.widgetResizable(), "Inhalt folgt der Breite")
KLEIN = 400
panel.resize(320, KLEIN)
rolle.resize(320, KLEIN)
rolle.widget().adjustSize()
inhalt_hoehe = rolle.widget().sizeHint().height()
pruefe(0 < panel.minimumSizeHint().height() <= KLEIN,
"Dock verlangt hoechstens %d px, aber nicht null (verlangt %d, Inhalt will %d)"
% (KLEIN, panel.minimumSizeHint().height(), inhalt_hoehe))
pruefe(inhalt_hoehe > KLEIN, "Der Testfall greift: der Inhalt ist hoeher als das Dock")
pruefe(rolle.verticalScrollBar().maximum() > 0, "senkrechter Rollbalken wird gebraucht")
pruefe(rolle.horizontalScrollBarPolicy() == Qt.ScrollBarPolicy.ScrollBarAlwaysOff,
"kein waagerechter Rollbalken")
pruefe(rolle.minimumWidth() >= 260, "Mindestbreite bleibt lesbar: %d px" % rolle.minimumWidth())
if not os.environ.get("VLN_TOKEN"):
print("== Online-Teil uebersprungen (VLN_TOKEN nicht gesetzt) ==")
print("== Ergebnis: %d Fehler ==" % len(FEHLER))
for f in FEHLER:
print(" -", f)
app.exitQgis()
sys.exit(1 if FEHLER else 0)
print("== angemeldet, echte Verfahrensliste ==")
client = KartenApiClient(api_key=os.environ["VLN_TOKEN"])
verfahren = client.get_verfahren()
@@ -95,8 +125,8 @@ panel.vorlage_haken.setChecked(False)
print("== Bild ==")
panel.set_status("Stil gespeichert: kas-27027-flaeche (Vorlage)")
panel.widget().resize(QSize(300, 760))
panel.widget().grab().save(ZIEL)
panel.widget().widget().resize(QSize(300, 760))
panel.widget().widget().grab().save(ZIEL)
print(" ", ZIEL, os.path.getsize(ZIEL), "Bytes")
app.exitQgis()