Fixed Size Window mit minimaler Größe: wie?

Alles rund um die Programmierung mit Qt
Antworten
maikelmeyers
Beiträge: 20
Registriert: 16. Mai 2010 17:19

Fixed Size Window mit minimaler Größe: wie?

Beitrag von maikelmeyers »

Hallo,

ich erzeuge in meinem Programm ein Main Window, welches natürlich ein Central Widget hat mit mehreren Label, Slidern und Eingabefeldern in einem QGridLayout. Ich will aber gern, dass das Main Window nicht resizeable und nur so groß ist, wie minimal nötig.

layout()->setSizeConstraint(QLayout::SetFixedSize); führt zwar zu einem fixed size window, aber leider zu groß, da sizeHint() ja die preferredSize liefert und nicht die minimumSize. Ich bekomm einfach nicht raus wie ich das Fenster mit Fixed Size genauso klein bekomme, als wenn ich es per Hand klein ziehen würde.

Weiß evtl. jemand Rat?
Danke.
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

für die Widgets
setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum)
dann kriegt SizeHint() die minimale Größe und dann kannst du die Größe festsetzen.
maikelmeyers
Beiträge: 20
Registriert: 16. Mai 2010 17:19

Beitrag von maikelmeyers »

Danke. Muss man das für jedes Widget einzeln festlegen oder kann man das vielleicht Default-mäßig global einstellen, das jedes neu angelegte Widget QSizePolicy:Minimum hat. Evtl. nur durch vererben von QWidget oder?

Mir ist da auch noch was anderes komisches aufgefallen: Durch layout()->setSizeConstraint(QLayout::SetMinimumSize); müsste das Hauptfenster beim Erzeugen doch eigentlich die minimale Größe haben, auch wenn man es dann größer ziehen kann. Bei mir kommt das fast hin, aber komischerweise kann man es nach dem erzeugen immer noch ein Stück kleiner machen. Hab ich da was falsch verstanden mit SetMinimumSize?
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

hm müsstest du ausprobieren.
Mir logisch erscheinen würde, dass wenn du dem MainWindow/CentralWidget das gibst, dass er alle seine Kind Objekte so klein macht wie er kann, aber das weiß ich nicht, müsstest du ausprobieren.
Antworten