Seite 1 von 1

[gelöst] LineEdit in GridLayout - will nicht dynamischt sein

Verfasst: 14. Juli 2009 16:40
von mfernau
Hallo Leute,

bin noch blutiger Anfänger - von daher nehme ich an man muss hier ganz simple denken :)

Ich hab mit dem QtCreator ein Projekt erzeugt. Dort habe ich ein Grundgerüst-UI mit dem Designer erstellt. In diesem UI gibt es ein QFrame mit dem Namen "contentFrame" welches ein GridLayout zugewiesen bekommen hat.

Programmatisch möchte ich diesem GridLayout nun Elemente zuweisen. Das mache ich wie folgt:

Code: Alles auswählen

QGridLayout* layout = (QGridLayout*)ui->contentFrame->layout();
layout->setColumnStretch(3,1);
while (query.next()) { // DB-Abfrage
   zaehlerName = new QLabel();
   zaehlerSerial = new QLabel();
   zaehlerOrt = new QLabel();
   difference = new QLabel();
   drift = new QLabel();
   lastValue = new QLabel();
   QLineEdit *e = new QLineEdit();
   e->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);

   layout->addWidget(zaehlerName,row,0,Qt::AlignLeft);
   layout->addWidget(zaehlerSerial,row,1,Qt::AlignLeft);
   layout->addWidget(zaehlerOrt,row,2,Qt::AlignLeft);
   layout->addWidget(e,row,3,Qt::AlignLeft); // Das 'Miststück' will nicht wachsen...
   layout->addWidget(lastValue,row,4,Qt::AlignLeft);
   layout->addWidget(difference,row,5,Qt::AlignLeft);
   layout->addWidget(drift,row,6,Qt::AlignLeft);

   [...]
}
Das sieht sogar fast toll aus. Bis auf den Umstand, dass das besagte LineEdit sich einfach weigert in der Horizontalen anzuwachsen, obwohl die Spalte ansich anwächst (das Label rechts daneben wandert davon). Es bleibt einfach ein paar Pixel breit und ende.
Hier ist bestimmt nur ne Winzigkeit zu beachten, die ich noch nicht kenne/sehe.

Wäre für einen Tipp dankbar!

Grüße,
Martin

Verfasst: 15. Juli 2009 10:24
von mfernau
Okay, ich habs.
Kleiner Fehler, große Wirkung. Ich darf das "Qt::AlignLeft" beim hinzufügen in das Layout nicht schreiben... So funktionierts wie gewünscht:

Code: Alles auswählen

layout->addWidget(e,row,3);