QVariant Liste nach QString Liste

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

QVariant Liste nach QString Liste

Beitrag von anno1988 »

Code: Alles auswählen


QSqlQuery query("SELECT irgendwas FROM irgendwo");
QList<QVariant> val;

val = query.boundValues().values();

Wie bekomme ich denn auf dem einfachsten Werg aus der QVariant Liste eine QString List?
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag von chrootdev »

Das sollte laut doku so funktionieren:

Code: Alles auswählen

//Für das erste element der QList

QStringList str_list = val.at(0).toList();
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ok achte das geht auch einfacher, ab dann muss ich wohl jedes Element der Liste einmal duchlaufen um es umzuwandeln.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Code: Alles auswählen

QStringList sl;
foreach(QVariant var, vl)
    sl.append(var.toString());
Ist wirklich kein Umstand und ich wüßte nicht wie es einfacher ginge. Qt würde es auch nicht anders machen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

[Klugscheisser Mode an]

Code: Alles auswählen

QStringList sl;
foreach(const QVariant &var, vl)
    sl.append(var.toString());
ist viel besser.
Noch besser wäre

Code: Alles auswählen

QStringList sl;
QList<QVariant>::ConstIterator it = v.constBegin();
QList<QVariant>::ConstIterator end = v.constEnd();
for( ; it != end ; ++it )
    sl.append(it.toString());
8)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Christian81 hat geschrieben:[Klugscheisser Mode an]
Hast du jetzt vergessen den wieder auszumachen? :/
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

[/Klugscheisser Mode an]
:lol:

Gut dass das der Moderator nicht sieht :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

da wir grad dabei sind ^^

warum schreibst du so komische iteratorschleifen ???
der v.end() sollt dich eigentlich nix kosten .. ist ja nur ne referenz auf nen vorhanden iterator !

Code: Alles auswählen

for(QList<QVariant>::const_iterator it = v.begin(); it != v.end(); ++it ) sl.append((*it).toString()); 
wenn scho klu ... dingens, dann richtig:

Code: Alles auswählen

QVariant var;
foreach(var,v) sl.append(var.toString); 
Wobei obere Version vielleicht schneller sein sollt, da foreach gleich ne kopie vom Wert macht, weiss ned ob der compiler das wegbekommt.
Aber das unten sieht schoener aus ! :lol: :lol: :lol:

Ciao ...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Zu end():
http://techbase.kde.org/Development/Tut ... _end.28.29

Und Q_FORECH ist wirklich langsamer (hat auch thiago maceira von trolltech zugegeben ;) )
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Christian81 hat geschrieben:Und Q_FORECH ist wirklich langsamer (hat auch thiago maceira von trolltech zugegeben ;) )
Ehrlich gesagt habe ich mich auch gewundert, warum sie das eingebaut haben. Die meisten Programmierer sind schon faul genug, da muss das nicht noch mit so was unterstützen :)
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Ok, dann machen die schleifen so schon Sinn ....

Wobei ich es schon eklig find, das die Qt da scheinbar so unperformant ist ...

bei der STL machts bei nem halbwegs moderenen Compiler keinen Unterschid, ob man das end() cacht oder ned, der end() aufruf sollte wegoptimiert werden ...
Ehrlich gesagt habe ich mich auch gewundert, warum sie das eingebaut haben.
Wahrscheinlich, weil die STL unter <algorithm> auch sowas ähnliches anbietet. Die ganzen Container haben ja auch ein STL-Like interface. Wobei es bei der stl mehr sinn macht ... durch die generische (sprich templetisierte) Implementation kann die stl impl fuer den Container immer ne optimierte version fuer den container überladen ....

Ciao ...
Antworten