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

Alles rund um die Programmierung mit Qt
Antworten
mfernau
Beiträge: 9
Registriert: 27. Mai 2009 18:58

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

Beitrag 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
Zuletzt geändert von mfernau am 15. Juli 2009 10:24, insgesamt 1-mal geändert.
mfernau
Beiträge: 9
Registriert: 27. Mai 2009 18:58

Beitrag 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); 
Antworten