Seite 1 von 1
Größe von Widget an Größe von übergeordnetem anpassen
Verfasst: 19. März 2008 23:06
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
Verfasst: 19. März 2008 23:55
von VuuRWerK
Layout verwenden.
Doku lesen!
Gut Schuß
VuuRWerK

Verfasst: 20. März 2008 09:08
von pospiech
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.
Verfasst: 20. März 2008 09:33
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
Verfasst: 14. April 2008 12:55
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