[solved] Groessenaenderung des MainWindow anwenden



  • Tagchen,
    ich hab hier ein QMainWindow, dem ich zum start eine feste Groesse zuweise. Aber das Fenster ist reszizable (was es an sich auch bleiben soll).
    Wie kann ich den widgets, die ich in die Mitte lege sagen, sie sollen die komplette Groesse des Fensters nutzen? und vor allem, wie sorge ich dafuer, dass ein widget automatisch an die Fenstergroesse angepasst wird, wenn das Fenster aufgezogen wird?
    Momentan hab ich ein QStackedWidget als centralWidget, in das ich von QWidget abgeleitete Klassen einbinde. Problem ist auch, dass ich eine verschiebbare Sidebar hab, sich also das central widget veraendern kann, ohne dass das Fenster seine groesse veraendert.
    ich hab an diversen stellen schon mit der QSizePolicy rumexperimentiert, und auch das auslesen der Groesse des Widgets/MainWindows bringt ausser QSize(100,30) nichts sinnvolles.
    Wie geht das?



  • mach im qmainwindow ein uebergeordnetes widget (zb qframe),
    setze das als centralwidget,
    gib dem widget ein layout,
    fuege dein(e) eigentlichen widget(s) dem layout hinzu:

    QFrame *mainFrame= new QFrame(this);
       setCentralWidget(mainFrame);
    
       QVBoxLayout *layout= new QVBoxLayout(mainFrame);
    
       layout->addWidget(widget1);
       layout->addWidget(widget2);
    


  • ich hab ja jetzt schon ein central widget, und zwar ein QStackedWidget, was ein QWidget ist, dem einfach als Layout das QStackedLayout aufgepfropft wurde:

    stack = new QStackedWidget( this );
    //stack->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    setCentralWidget(stack);
    mainContent = new mainPage( stack );
    stack->addWidget( mainContent );
    imageViewer = new imgViewer( stack );
    stack->addWidget( imageViewer );
    stack->setCurrentIndex(0);
    


  • dein QStackedWidget muss in ein layout.



  • QStackedWidget can be used to create a user interface similar to the one provided by QTabWidget. It is a convenience layout widget built on top of the QStackedLayout class.
    es sieht ein wenig anders aus, denn ich hab innerhalb des Klasse imageViewer (von QWidget abgeleitet) ein neues QWidget erstellt gehabt... ich hab das bissel verschoben und dann geloescht und dem Layout einfach ein this mit auf den Weg gegeben 😉
    trotzdem vielen Dank
    gut'n Rutsch
    C167


Anmelden zum Antworten