Mehrere Buttons hinzufügen und wieder löschen [gelöst]

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
rvb
Beiträge: 35
Registriert: 8. April 2010 14:42

Mehrere Buttons hinzufügen und wieder löschen [gelöst]

Beitrag von rvb »

Hallo Forum,

ich möchte während der Programmlaufzeit das GUI ändern bzw ein paar Buttons hinzufügen und zu einem späteren Zeitpunkt wieder löschen. Von der Möglichkeit alle Buttons anfangs hinzuzufügen und bis zum Gebrauch zu verstecken habe ich gelesen, das ist aber nicht was ich beabsichtige.

Das Erstellen von einzelnen Buttons klappt mit folgendem Code schon ganz gut:

Code: Alles auswählen

QPushButton* b1 = new QPushButton(tr("B1 "), this);
gridLayout->addWidget(b1,1,1,1,1, Qt::AlignCenter);
b1->show();
Allerdings ist mir nicht ganz klar, wie ich das mit mehreren machen muss, da jeder Button ja einen anderen Namen bekommen soll.

Code: Alles auswählen

while (query.next()) {
QString Buttonname = query.value(record.indexOf("Name")).toString();
// hier neuen Button mit Buttonname erzeugen (b1,b2,b3,b4)
}
Grüße
Roland


[/code]
Zuletzt geändert von rvb am 19. April 2010 07:30, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was meinst du mit Namen? Object-Namen oder Beschriftung? Oder etwa Veriable?

Beschriftung: Die Buttons werde doch alle anders Beschriftet, je nachdem was in der Datenbank steht.

Variable: Beschäftige dich mal mit QList.
rvb
Beiträge: 35
Registriert: 8. April 2010 14:42

Beitrag von rvb »

Angenommen die Datenbank liefert (b1,b2,b3),
dann soll durch das while folgendes passieren:

Code: Alles auswählen

QPushButton* b1 = new QPushButton(tr("B1 "), this);
gridLayout->addWidget(b1,1,1,1,1, Qt::AlignCenter);
b1->show(); 

QPushButton* b2 = new QPushButton(tr("B2 "), this);
gridLayout->addWidget(b2,1,1,1,1, Qt::AlignCenter);
b2->show(); 

QPushButton* b3 = new QPushButton(tr("B3 "), this);
gridLayout->addWidget(b3,1,1,1,1, Qt::AlignCenter);
b3->show(); 
rvb
Beiträge: 35
Registriert: 8. April 2010 14:42

Beitrag von rvb »

Danke, das mit der Liste war die richtige Idee:

Code: Alles auswählen

QList <QPushButton*> ButtonListe;
int i=0;
while (query.next()) {
ButtonListe.append(new QPushButton("name"));
QPushButton* temp = ButtonListe.at(i);
gridLayout_addhere->addWidget(temp,1,1,1,1, Qt::AlignCenter);
temp->show();
i++;
}

upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Jetzt sollte man nur noch den addWidget-Aufruf umschreiben, sonst ist das ganze Layout umsonst.
rvb
Beiträge: 35
Registriert: 8. April 2010 14:42

Beitrag von rvb »

:oops:

Code: Alles auswählen

QList <QPushButton*> ButtonListe;
int i=0;
while (query.next()) {
ButtonListe.append(new QPushButton("name"));
QPushButton* temp = ButtonListe.at(i);
gridLayout_addhere->addWidget(temp,i,1,1,1, Qt::AlignCenter);
temp->show();
i++;
} 
Antworten