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:
+31
-3
@@ -15,6 +15,9 @@ Aufbau von oben nach unten:
|
||||
5. Darstellung — Stil speichern (mit Häkchen „für alle Verfahren")
|
||||
6. Statuszeile
|
||||
|
||||
Der Inhalt sitzt in einer Rollfläche: ist die Leiste höher als der Bildschirm, rollt sie,
|
||||
statt das QGIS-Fenster zu strecken (Issue #1).
|
||||
|
||||
Der frühere GeoJSON-Weg (Kopie laden, später als Ganzes hochladen) ist am 08.09.2026
|
||||
entfallen (Erik: „das Speichern via OGC einbauen, GeoJSON nicht mehr verwenden"). Über
|
||||
die OGC API schreibt QGIS jede Änderung einzeln zurück; „Änderungen speichern" schließt
|
||||
@@ -24,7 +27,7 @@ nur die offenen Bearbeitungssitzungen.
|
||||
from qgis.PyQt.QtCore import Qt
|
||||
from qgis.PyQt.QtWidgets import (QCheckBox, QComboBox, QDockWidget, QFrame, QGroupBox,
|
||||
QHBoxLayout, QLabel, QLineEdit, QListWidget,
|
||||
QListWidgetItem, QPushButton, QSizePolicy,
|
||||
QListWidgetItem, QPushButton, QScrollArea, QSizePolicy,
|
||||
QVBoxLayout, QWidget)
|
||||
|
||||
PANEL_TITEL = "VLN Karten"
|
||||
@@ -72,7 +75,29 @@ class VlnPanel(QDockWidget):
|
||||
aussen.addWidget(self._bau_status())
|
||||
|
||||
inhalt.setMinimumWidth(260)
|
||||
self.setWidget(inhalt)
|
||||
|
||||
# Die Seitenleiste haengt in einer Rollflaeche, nicht direkt im Dock (Daniel Helbig,
|
||||
# LK Meissen, 14.09.2026 — Issue #1 „UI-Ueberlauf"): ein QDockWidget gibt die
|
||||
# Mindesthoehe seines Inhalts an das Hauptfenster weiter. Ist der Inhalt hoeher als
|
||||
# der Bildschirm, waechst das QGIS-Fenster mit und sein unterer Rand rutscht ins
|
||||
# Unsichtbare — samt Statusleiste. Die Rollflaeche kappt diese Weitergabe und blendet
|
||||
# stattdessen einen senkrechten Rollbalken ein.
|
||||
rolle = QScrollArea()
|
||||
rolle.setWidget(inhalt)
|
||||
rolle.setWidgetResizable(True) # Inhalt folgt der Breite des Docks
|
||||
rolle.setFrameShape(QFrame.Shape.NoFrame)
|
||||
rolle.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
|
||||
rolle.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded)
|
||||
# Ohne das bleibt die Mindesthoehe des Inhalts am Dock haengen und der Rollbalken
|
||||
# aendert nichts an der gemeldeten Groesse. Uebrig bleibt die eigene Mindesthoehe der
|
||||
# Rollflaeche (gemessen 88 px) — klein genug fuer jeden Bildschirm, gross genug,
|
||||
# dass sich das Dock nicht auf einen Strich zusammenziehen laesst.
|
||||
rolle.setMinimumHeight(0)
|
||||
# Breite des Rollbalkens draufschlagen, sonst schneidet er die Auswahllisten an.
|
||||
balken = rolle.verticalScrollBar().sizeHint().width() or 16
|
||||
rolle.setMinimumWidth(260 + balken)
|
||||
|
||||
self.setWidget(rolle)
|
||||
self.set_angemeldet(False)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
@@ -157,7 +182,10 @@ class VlnPanel(QDockWidget):
|
||||
lage.setSpacing(6)
|
||||
lage.addWidget(_klein(QLabel("WMS-, WFS- und ArcGIS-Dienste für dieses Verfahren.")))
|
||||
self.dienste_liste = QListWidget()
|
||||
self.dienste_liste.setMinimumHeight(140)
|
||||
# Bewusst niedrig: die Mindesthoehe aller Kaesten zusammen ist die Mindesthoehe des
|
||||
# Docks (s. Rollflaeche im Konstruktor). 140 px hier machten die Seitenleiste auf
|
||||
# einem 13-Zoll-Bildschirm hoeher als das Fenster.
|
||||
self.dienste_liste.setMinimumHeight(90)
|
||||
self.dienste_liste.setToolTip("Angehakte Dienste werden geladen")
|
||||
lage.addWidget(self.dienste_liste)
|
||||
zeile = QHBoxLayout()
|
||||
|
||||
Reference in New Issue
Block a user