Größe von Widget an Größe von übergeordnetem anpassen

Alles rund um die Programmierung mit Qt
Antworten
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Größe von Widget an Größe von übergeordnetem anpassen

Beitrag von pospiech »

Ich habe ein Qwidget Klasse erstellt die eine qwt Widget enthält.
Jetzt möchte ich das das Widget 'qwtwidget' immer die Größe der übergeordnetem widgets hat und bei einer Größenänderung automatisch mitangepasst wird.

Wie mache ich das ?

Matthias
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag von VuuRWerK »

Layout verwenden. Doku lesen!

Gut Schuß
VuuRWerK ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

VuuRWerK hat geschrieben:Layout verwenden. Doku lesen!
Also, ich kenne die Layoutklassen schon, und verwende sie in Dialogen auch regelmäßig. Aber ich weiß nicht welche Eigenschaft/Funktion ich genau verwenden sollte. Da hilft mir auch dreimaliges Lesen der Doku nicht weiter.

Im Prinzip ist das Problem equivalent zu Dialogen deren Layouts mit einer Größenänderung des Dialogs mitwachsen sollen. Das wird in dem Beispiel allerdings ebenfalls nicht angesprochen.
Deever
Beiträge: 90
Registriert: 9. Mai 2007 18:20

Beitrag von Deever »

pospiech hat geschrieben:Aber ich weiß nicht welche Eigenschaft/Funktion ich genau verwenden sollte.
Äh, addWidget, addLayout und addStretch/Spacing?
Im Prinzip ist das Problem equivalent zu Dialogen
Wenn das Problem äquivalent ist, warum sollte nicht auch die Lösung äquivalent sein?

Fragen über Fragen...
Gruß,
/dev
pospiech
Beiträge: 232
Registriert: 1. September 2006 17:20
Wohnort: Hannover

Beitrag von pospiech »

Deever hat geschrieben:
pospiech hat geschrieben:Aber ich weiß nicht welche Eigenschaft/Funktion ich genau verwenden sollte.
Äh, addWidget, addLayout und addStretch/Spacing?
Ich habe nun das qwtwidget in ein QGridLayout gepackt. Die UI cpp Datei enthält dann folgenden Code:

Code: Alles auswählen

    QWidget *gridLayout;
    QGridLayout *gridLayout1;
    QwtPlot *qwtPlot;

    void setupUi(QWidget *QCurvePlot)
    {
    if (QCurvePlot->objectName().isEmpty())
        QCurvePlot->setObjectName(QString::fromUtf8("QCurvePlot"));
    QCurvePlot->resize(487, 297);
    QCurvePlot->setAutoFillBackground(false);
    gridLayout = new QWidget(QCurvePlot);
    gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
    gridLayout->setGeometry(QRect(40, 10, 241, 251));
    gridLayout1 = new QGridLayout(gridLayout);
    gridLayout1->setObjectName(QString::fromUtf8("gridLayout1"));
    gridLayout1->setContentsMargins(0, 0, 0, 0);
    qwtPlot = new QwtPlot(gridLayout);
    qwtPlot->setObjectName(QString::fromUtf8("qwtPlot"));
    QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(qwtPlot->sizePolicy().hasHeightForWidth());
    qwtPlot->setSizePolicy(sizePolicy);

    gridLayout1->addWidget(qwtPlot, 0, 0, 1, 1);
Wenn ich nun nach dem setupUi(this); folgendes ausführe (ganz oder teilweise), dann passiert entweder gar nichts, oder der Plot verschwindet größtenteils.

Code: Alles auswählen

    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    qwtPlot->setSizePolicy(sizePolicy);

	gridLayout1->setOriginCorner(Qt::TopLeftCorner);	
	gridLayout1->setColumnStretch ( 0, 20);
	gridLayout1->setRowStretch (0, 20);
wobei ich anmerken muss das ich nicht wirklich verstanden habe was ich wie / wo anwenden muss da ich in der Doku noch kein Beispiel finden konnte das zu meinem Problem eine Beispiellösung enthält.

Matthias
Antworten