2016-05-06 11 views
0

Edit:Was ist die Standardtextdarstellung von Qt-Typen?

Ich sollte klarstellen: Ich bin bestrebt, die Werte zu serialisieren, nicht nur den Namen des Typs.


Gibt es ein für Menschen lesbares/textuelles Format für die eingebauten Typen von Qt? (Zum Beispiel diejenigen, die in QMetaType oder QVariant :: Type registriert sind.)

Mit Blick auf die Quelle von QSettings wird dieses "ini" -Format manuell erstellt. Es gibt riesige Schalterblöcke, die die "ini" -Darstellung manuell serialisieren und deserialisieren. Es ist leider auch kein Standard - weil es Teil der "privaten" Implementierung von QSettings ist.

Oder gibt es überhaupt keinen Standard für die textuelle Darstellung von Qt-Typen?

+0

Ich denke nicht. Ich würde vorschlagen QVariant/QVariantMap Typen und JSON als etwas zu erforschen. – hyde

Antwort

1
class MyClass {}; 
Q_DECLARE_METATYPE(MyClass) 

QVariant var = QVariant::fromValue<MyClass>(MyClass()); 
std::cout << var.typeName() << std::endl; 

wird "MyClass" drucken. Sie können es mit jedem registrierten Typ auch tun: QMetaType::typeName(qMetaTypeId<int>())

+0

Ich habe meine Frage bearbeitet, um genauer zu sein, was ich gerade untersuche. – SaburoutaMishima

+0

@SaburoutaMishima, verwenden Sie 'QDataStream' mit' QFile' und serialisieren/deserialisieren Sie Werte als 'QVariant's. 'QVariant :: typeName()' druckt den Typnamen, 'QVariant :: toString()' druckt eine textuelle Repräsentation des Wertes fast jedes Typs. Lustig ist, dass "QVariant" sogar "QVariantList" oder "QVariantMap" sein kann, so dass das Serialisieren von ganzen Datenbäumen mit einer Klasse möglich ist –