Qt Layout



  • Abend Leute,

    bin Qt Neuling und hab 3 Fragen zu Qt Layout Managern:

    1. Ich habe im Qt Designer ein MainWindow und schiebe da jetzt 3 PushButtons rein. Dann wähle ich alle 3 Buttons aus und wähle "Lay out horizontally" - jetzt liegen sie ganz eng nebeneinander. Aber wenn ich jetzt die Form anschaue (Preview) und resize, passiert garnichts mit den Buttons - keinerlei Resizing. Kann es also sein, dass dieses horizontale Layout garnicht zu meinem Window hinzugefügt wurde? Muss ich immer erst das Window selber anklicken und "lay out horizontally" machen?

    2. Wenn ich ein Layout manuell per Code setze, sieht das z.B. so aus:

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    setLayout(mainLayout);
    

    Ich gebe also explizit ein Layout für das Window mit setLayout() an. Aber wenn ich jetzt meine Layouts im Qt Designer gestalte und in den generierten Code schaue, dann gibt es da nirgends ein setLayout()
    Nur sowas:

    verticalLayout = new QVBoxLayout(centralwidget);
     verticalLayout = new QVBoxLayout(centralwidget);
    

    Setzt diese Zeile das Layout des central Widget? Oder ist das nur fürs Resourcen Management (damit das Layout gelöscht wird, wenn das Centra Widget zerstört wird)?

    1. Letzte Frage: Es gibt ja diese QSizePolicy member. Die arbeiten alle basierend auf sizeHint(), oder?
      Sagen wir ich habe ein Widget w mit QSizePolicy::Minimum. Bedeutet das jetzt, dass der Layoutmanager size = w->sizeHint() macht und danns agt: "w soll nicht kleiner sein als size, KÖNNTE aber größer sein (allerdings eher nicht erwünscht)." Stimmt das?

Anmelden zum Antworten