pyqt: layout-problem in qscrollview

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
flix
User
Beiträge: 9
Registriert: Freitag 11. März 2005, 18:21
Wohnort: Freiburg

Sonntag 16. Juli 2006, 01:00

Hallo,

ich habe ein Problem mit den folgenden beiden Widgets, die ich mir defniert habe (siehe URLs)
1. PremiseInput
2. PremiseList

Beide Module sind direkt lauffähig, so daß Ihr das Problem gleich mitverfolgen könnt.
Bei mir laufen die Programme unter Python 2.3.5 und mit pyqt 3.15.

Das Widget PremiseList, soll eine Liste von PremiseInput's in einem QScrollview anzeigen, der nur
vertikal scrollbar sein soll. Horizontal, sollen die Einträge an die Breite des ScrollView.viewport()
angepasst werden, so daß das komplette Widget zu sehen ist.
Dazu habe ich in dem ScrollView ein QFrame mit QVBoxLayout erzeugt, um die PremiseInputs vertikal
anzuordnen. Über die Buttons im PremiseList Widget soll man
1. neue Inputs hinzufügen können
2. die gesamte Liste löschen könne
3. einzelne (über aktuellen Focus markierte) Inputs löschen können.

Über die Definition einer resizeEvent-Methode, kann ich die Breite der Inputs im ScrollView so
anpassen, dass sie die gesamte Breite des ScrollView.viewport() abdecken.

Das funktioniert alles soweit so gut, bis auf das Layout innerhalb des ScrollViews.
Wenn ich die Größe des Fensters/Widget ändere, und danach ein neues PremiseInput hinzufüge,
wird die Breite des QFrames innerhalb des ScrollViews wieder auf den Wert zurückgesetzt, den
es am Anfang hatte und das Layout innerhalb des Views sieht total verschoben aus. Erst nach
einem erneuten 'Resize' des Fensters, wird die Breite aktualisert.
Wie kann ich, nachdem ich ein neues PremiseInput Widget zum Frame hinzugefügt habe, die
Frame-Breite an die Breite des ScrollViews anpassen?
Kann ich irgendwie einen resizeEvent auslösen?

vielen Dank und Gruß,
Felix
Antworten