[SOLVED] Qbjektname aus Variable

Alles rund um die Programmierung mit Qt
Antworten
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

[SOLVED] Qbjektname aus Variable

Beitrag von t0bias »

Hallo zusammen,

wie kann ich einem dynamisch generierten Objekt einen Namen aus
einer Variable zuteilen?
Also wenn ich z.B. Label während der Laufzeit erstelle, das erste
"Label_1" nennen, das zweite "Label_2", usw.?

Danke und Gruss
Tobi
Zuletzt geändert von t0bias am 24. März 2009 13:01, insgesamt 1-mal geändert.
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Welchen Sinn soll das denn haben? Der Name ist doch nur entscheidend um über ui auf das Widget zugriff zu haben. Wenn du es dynamisch generierst, speicherst du es als Member.
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Beitrag von t0bias »

Hm.. aber wie kann ich dann darauf zugreifen?
Verstehe ich noch nicht ganz, sorry?
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Es hat mich jemand darauf hingewiesen, dass es Mist ist/sein soll, was ich schreibe, also macht man das wohl doch so oder so ähnlich wie du dir das vorstellst ;).

EDIT:
Wird dir nachher noch jemand anders schreiben, der es auf andere Art macht.
Ich habe bisher nie große Anzahlen an Widgets Dynamisch erstellen müssen, jedoch eine kleinere Anzahl Views und ComboBoxes. Du erstellst die völlig normal

Code: Alles auswählen

QLabel *label = new QLabel(parentDialog);
label->setText("Label1");
und kannst sie dann hinzufügen. Solltest du irgendwelche Werte ändern müssen, kannst du das Label in der Klasse definieren und hast somit immer Zugriff. Hast du eine dynamische Anzahl, dann z.B. als Vector.
Ich weiß nicht, ob das wirklich so dumm ist.
Zuletzt geändert von CLRS530 am 24. März 2009 12:27, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

In C++ kann man keine Variablennamen zur Laufzeit erzeugen.
Also alles z.B. in einer QList<label*> speichern und später dann per Index drauf zugreifen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Vielleicht mit QObject::setObjectName ( const QString & name )?
Als String einfach tr("Label_%1").arg(i) übergeben. 8)

Aber besser ist es wohl eine QList<QLabel*> zu erstellen, dann kannst du die Labels (oder auch andere Objekte) besser verwalten bzw. du sparst das aufrufen per Name.
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag von CLRS530 »

Jup, ich denke mal, dass er so etwas meinte, aber für mich wäre es wesentlich übersichtlicher mit einem Vektor zu arbeiten, mal von dem Geschwindigkeitsvorteil abgesehen, der dort wahrscheinlich eh eine untergeordnete Rolle spielt.
Darüber hinaus bekommt man mit diesen Objekten z.B. auch keine Anzahl an Widgets zurück, die bei Vector mit count sofort herauszubekommen ist. Aber jedem wie er es vorzieht.
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Beitrag von t0bias »

danke, super! genau das meinte ich!

Gruss
Tobi
Antworten