Konvertiert eine QVariante eines benutzerdefinierten Typs in einen QString

8

Ich habe eine benutzerdefinierte Klasse namens Money, die ich mit Q_DECLARE_METATYPE () deklariert habe.

%Vor%

Ich speichere das in einem QVariant und ich möchte es in einen QString konvertieren:

%Vor%

Die Variable s ist eine leere Zeichenfolge, weil QVariant nicht weiß, wie ich meinen benutzerdefinierten Typ in die Zeichenfolge konvertieren kann. Gibt es eine Möglichkeit, dies zu tun?

    
darkadept 17.03.2009, 16:20
quelle

3 Antworten

4

Ok, ich habe einen Weg gefunden, dies zu tun. Ich habe einen übergeordneten Typ namens CustomType mit einer virtuellen Methode erstellt, die ich implementieren kann, um meinen benutzerdefinierten Typ in einen "normalen" QVariant zu konvertieren:

%Vor%

Ich habe daraufhin meine benutzerdefinierte Money-Klasse geerbt.

%Vor%

Dies erlaubt mir, meine benutzerdefinierten Money-Variablen in QVariants zu übergeben, damit ich sie im Qt-Property-System, im Model / View-Framework oder im SQL-Modul verwenden kann.

Aber wenn ich meine benutzerdefinierte Money-Variable in der Datenbank speichern muss (mit QSqlQuery.addBindValue) kann es keine benutzerdefinierte Klasse sein, es muss ein bekannter Typ sein (wie double).

%Vor%

myNewVariant hat jetzt den Typ double, nicht Money, also kann ich ihn in einer Datenbank verwenden:

%Vor%

oder konvertieren Sie es in eine Zeichenfolge:

%Vor%     
darkadept 17.03.2009, 18:10
quelle
0

Sind Sie sicher, dass das Folgende funktioniert?

  

gibt QString (_value);

zurück

Ich finde kein QString ctor, das ein double benötigt. Sie müssen die Konvertierung hier selbst vornehmen. Der Qt-Weg ist:

%Vor%     
dirkgently 17.03.2009 16:39
quelle
-1

Was passiert, wenn Sie es so versuchen?

%Vor%     
MarkusQ 17.03.2009 16:37
quelle

Tags und Links