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?
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%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: