Название: C++ объект в XML, JSON etc и назад Отправлено: qt_newer от Октябрь 03, 2014, 15:08 Есть какой-то простой способ сделать это на абстрактном уровне (есть несколько классов приложения, для кот. это должно быть сделано) или лучше не тратить время и сделать это для каждого класса отдельно, хардкодед, так сказать :) У меня есть несколько идей, но они мне не очень нравятся: 1я это реализовать проперти и сериалайз интерфейс как в дот.нет, 2я - для каждого класса сделать перевод в/из QSettings, а уже для этого класса реализовать (де)сериализацию в требуемый формат
Спасибо заранее! Название: Re: C++ объект в XML, JSON etc и назад Отправлено: qt_newer от Октябрь 03, 2014, 15:15 P.S. Должно работать для QT 4.8
Название: Re: C++ объект в XML, JSON etc и назад Отправлено: gil9red от Октябрь 03, 2014, 17:09 Придется вручную делать.
Название: Re: C++ объект в XML, JSON etc и назад Отправлено: qt_newer от Октябрь 03, 2014, 17:40 все-таки, такой вариант реализую (гугл помог :)
В классе задать Q_OBJECT Q_PROPERTY(QString message READ message WRITE setMessage) ... void setMessage(const QString &v) { mMessage = v; } QString message() const { return mMessage; } private: QString mMessage; и потом, QDomDocument doc; QDomElement root = doc.createElement(object->metaObject()->className()); doc.appendChild(root); for(int i = 0; i < object->metaObject()->propertyCount(); i++) { QMetaProperty prop = object->metaObject()->property(i); QString propName = prop.name(); if(propName == "objectName") continue; QDomElement el = doc.createElement(propName); QVariant value = object->property(propName.toLatin1().data()); QDomText txt = doc.createTextNode( value.toString() ); el.appendChild(txt); root.appendChild(el); } |