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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user