Layout in einem Widget zentrieren

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hi Community,

wie kann ich ein Layout in einem Widget genau im Mittelpunkt des Widgets halten, sprich, auch nach einem Resize bleibt das Layout im Mittelpunkt.

Ich habe es bisher nur über zwei verschachtelte vbox bzw. hbox Layouts geschafft. Gibt es da eine schönere Variante?

Grüße,
anogayales
lunar

Es fällt mir schwer, mir unter diesem Beitrag etwas vorzustellen. Kannst Du Dein Problem vielleicht einmal anhand eines Beispiels erläutern?
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hier ein Beispiel:

Groß:
Bild

Klein:
Bild

Das weiße Kästchen ist das Widget und das rote Kästchen ist das innere Layout. Das innere Layout soll immer im Mittelpunkt des weißten Kästchens bleiben. Sprich: Wenn das Widget verkleinert bzw. vergrößert wird soll sich das rote Kästchen automatisch ausrichten.

Grüße,
anogayales
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie wäre es mit 4 Spacern drum herum? An jede "Kante" des inneren Widgest eben je zwei vertikale nach oben und unten, sowie zwei horizontale nach rechts und links. Damit sollte das klappen.

http://paste.pocoo.org/show/230562/
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Wenn man das ganze als Code implementieren müsste, müsste man ja auch ein VBOX und ein HBOX Layout ineinander verschachtel, oder sehe ich das was falsch?
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

Schaff am besten mit dem Designer, zieh dein ZentrumsWidget drauf, mach recht, links, oben und unten einen Spacer hin, markier alle (schau das die Elemente in etwa gleich groß sind) und weise den ganzen Elementen ein QGridLayout zu, dann dem Widget noch ein Layout und dann sollte es tun. Über die von dir genannte Verschachtelung geht es auch aber auch da brauchst Du Spacer sonst dehnt sich dein ZentrumsWidget bis an den Rand aus.

Geht natürlich auch ohne Designer, mit nem GridLayout ...

Gruß
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Gibt es in Qt keine Flags, wie in wxPython, z.B. wx.CENTER etc.?
the more they change the more they stay the same
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Es gibt sowas, leider hab ich noch nicht wirklich rausgefunden, was die bewirken :)

http://doc.qt.nokia.com/4.6/qt.html#AlignmentFlag-enum

Geht anscheinend nur mit Text -.-
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

anogayales hat geschrieben:Wenn man das ganze als Code implementieren müsste, müsste man ja auch ein VBOX und ein HBOX Layout ineinander verschachtel, oder sehe ich das was falsch?
ichisich hat es ja schon geschrieben! Nein. Musst Du nicht. Öffne doch die Datei im Designer und schau es Dir an - aus diesem Grunde habe ich sie hier gepostet; erschien mir sinniger als ein Screenshot vom Designer.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten