Minimieren/Maximieren mit Layouts [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Minimieren/Maximieren mit Layouts [gelöst]

Beitrag von chronos »

Hi @ all,

mal ne dumme Frage aber wie bewege ich mein Layout dazu sich mit seinem Parent Window zu vergrößern bzw verkleineren.

Ich habe ein Mainwindow mit einem QHBoxLayout in dem eine ListView, und ein Tab-Container ist. Diese sollen sich wenn das MainWindow maximiert wird, mit vergrössern.

Irgendwelche Ideen?
Zuletzt geändert von chronos am 17. Februar 2006 15:14, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Minimieren/Maximieren mit Layouts

Beitrag von macman »

Nimm den Designer, erstell dir einen Dialog mit Objekten und Layouts und dann schaust Du dir hinterher die generierte ui_dialog.h an, Stichwort QSizePolicy.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

das prob ist ich hab es mit dem Designer erstellt:

Code: Alles auswählen

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHBoxLayout>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QSpacerItem>
#include <QtGui/QStatusBar>
#include <QtGui/QTabWidget>
#include <QtGui/QTreeWidget>
#include <QtGui/QWidget>

class Ui_MainWindow
{
public:
    QAction *actionWfdef_laden;
    QAction *actionBeenden;
    QWidget *centralwidget;
    QWidget *widget;
    QHBoxLayout *hboxLayout;
    QTreeWidget *treeWidget;
    QSpacerItem *spacerItem;
    QTabWidget *tabWidget;
    QWidget *tab;
    QWidget *tab_2;
    QMenuBar *menubar;
    QMenu *menuDatei;
    QStatusBar *statusbar;

    void setupUi(QMainWindow *MainWindow)
    {
    MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
    MainWindow->resize(QSize(1182, 875).expandedTo(MainWindow->minimumSizeHint()));
    QSizePolicy sizePolicy(static_cast<QSizePolicy::Policy>(7), static_cast<QSizePolicy::Policy>(7));
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth());
    MainWindow->setSizePolicy(sizePolicy);
    MainWindow->setAutoFillBackground(false);
    actionWfdef_laden = new QAction(MainWindow);
    actionWfdef_laden->setObjectName(QString::fromUtf8("actionWfdef_laden"));
    actionBeenden = new QAction(MainWindow);
    actionBeenden->setObjectName(QString::fromUtf8("actionBeenden"));
    centralwidget = new QWidget(MainWindow);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    widget = new QWidget(centralwidget);
    widget->setObjectName(QString::fromUtf8("widget"));
    widget->setGeometry(QRect(20, 10, 1141, 821));
    hboxLayout = new QHBoxLayout(widget);
    hboxLayout->setSpacing(6);
    hboxLayout->setMargin(0);
    hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
    treeWidget = new QTreeWidget(widget);
    treeWidget->setObjectName(QString::fromUtf8("treeWidget"));
    QSizePolicy sizePolicy1(static_cast<QSizePolicy::Policy>(0), static_cast<QSizePolicy::Policy>(7));
    sizePolicy1.setHorizontalStretch(0);
    sizePolicy1.setVerticalStretch(0);
    sizePolicy1.setHeightForWidth(treeWidget->sizePolicy().hasHeightForWidth());
    treeWidget->setSizePolicy(sizePolicy1);

    hboxLayout->addWidget(treeWidget);

    spacerItem = new QSpacerItem(10, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);

    hboxLayout->addItem(spacerItem);

    tabWidget = new QTabWidget(widget);
    tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
    tab = new QWidget();
    tab->setObjectName(QString::fromUtf8("tab"));
    tabWidget->addTab(tab, QApplication::translate("MainWindow", "Tab 1", 0, QApplication::UnicodeUTF8));
    tab_2 = new QWidget();
    tab_2->setObjectName(QString::fromUtf8("tab_2"));
    tabWidget->addTab(tab_2, QApplication::translate("MainWindow", "Tab 2", 0, QApplication::UnicodeUTF8));

    hboxLayout->addWidget(tabWidget);

    MainWindow->setCentralWidget(centralwidget);
    menubar = new QMenuBar(MainWindow);
    menubar->setObjectName(QString::fromUtf8("menubar"));
    menubar->setGeometry(QRect(0, 0, 1182, 22));
    menuDatei = new QMenu(menubar);
    menuDatei->setObjectName(QString::fromUtf8("menuDatei"));
    MainWindow->setMenuBar(menubar);
    statusbar = new QStatusBar(MainWindow);
    statusbar->setObjectName(QString::fromUtf8("statusbar"));
    statusbar->setGeometry(QRect(0, 853, 1182, 22));
    MainWindow->setStatusBar(statusbar);

    menubar->addAction(menuDatei->menuAction());
    menuDatei->addAction(actionWfdef_laden);
    menuDatei->addAction(actionBeenden);
    retranslateUi(MainWindow);

    QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
    MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
    actionWfdef_laden->setText(QApplication::translate("MainWindow", "wfdef laden", 0, QApplication::UnicodeUTF8));
    actionBeenden->setText(QApplication::translate("MainWindow", "Beenden", 0, QApplication::UnicodeUTF8));
    tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate("MainWindow", "Tab 1", 0, QApplication::UnicodeUTF8));
    tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate("MainWindow", "Tab 2", 0, QApplication::UnicodeUTF8));
    menuDatei->setTitle(QApplication::translate("MainWindow", "Datei", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

#endif // UI_MAINWINDOW_H

macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das MainWindow hat kein Layout, so wie ich das sehe. Einfach mal in den freien Bereich des Fensters klicken und dann ein Layout auswählen, kein Layout ins Fenster ziehen.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

ooo mann bin ich doof
Mein Fehler:

Ich hab im Designer immer ein Layout auf das MainWindow gezogen anstatt mit rechtsclick->layout das Gewünschte auszuwählen... Ouuu

Aber müsste es nicht möglich sein dennoch das gewünschte Verhalten zu erzielen, selbst wenn ich das Layout einfach per Drag And Drop einfüge?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

chronos hat geschrieben:Aber müsste es nicht möglich sein dennoch das gewünschte Verhalten zu erzielen, selbst wenn ich das Layout einfach per Drag And Drop einfüge?
Du kannst auch Layouts einem Layout hinzufügen, was oft auch nötig ist. Dann nutzt man so ein Layout genauso wie ein Widget, es macht also durch aus Sinn. Wenn man es erstmal weiss, kommt man gut mit zurecht. Man sollte einen Dialog oder ein Window sowieso vorher im Designer testen, allein schon um zu sehen, ob alle Spacer sich richtig verhalten usw.
chronos
Beiträge: 34
Registriert: 20. September 2005 09:17
Kontaktdaten:

Beitrag von chronos »

okay danke für die Hilfe
Antworten