Wie zentriere ich ein StackedLayout?



  • Hallo
    Ich versuche gerade, ein StackedLayout mithilfe eines BoxLayouts auf einem widget zu zentrieren.
    Das ziel ist, verschiedene widgets gleicher (fixierter) größe einem StackedLayout hinzuzufügen, damit das gerade gewählte widget immer in der mitte des parent widgets (das beliebig vergrößerbar ist) sitzt.
    Im Pseudocode sieht das irgendwie so aus:

    mainWidget::mainWidget(QWidget* parent)
       :QWidget(parent)
    {
       frame = new QFrame(this);
       frame->setFrameShape(QFrame::Box);
       frame->setMinimumSize(100,100);
       frame->setMaximumSize(100,100);
       frame->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
       frame->show();
    
       layout = new QHBoxLayout(this);
       l2 = new QStackedLayout(this);
       l2->addWidget(frame);
       layout->addLayout(l2);
    }
    

    Mein Problem mit der sache ist jetzt, dass der frame so dargestellt wird, als ob er zu überhaupt keinem layout gehören würde.
    Ohne das stackedLayout funktioniert das ganze übrigens so, wie ich mir das vorstelle.
    Irgendwelche ideen?



  • ich glaube nicht, dass ich dich ganz verstanden habe?! aber warum hast du im konstruktor 2 layouts? reicht das stacklayout nicht aus?

    und dann hilft dir vielleicht sowas zum zentrieren im box-layout:

    Qt::AlignHCenter
    

    , funktioniert aber nur bei widgets! d.h. du müsstest das stack-layout in sowas wie ne box packen und die dann als widget einfach hinzufügen...

    also in der klassen deklaraton sowas wie:

    QGroupBox *....;
    void create groupbox();
    

    und in der implementation dann das erzeugen der groupbox in der du dann das stack packst.

    im konstruktor das groupbox in das layout schmeißen... mit Qt::AlignHCenter, oder wie du dass dann willst...



  • nicht schlagen wegen des vergessenen "_"... es ist spät...


Log in to reply