Чтение / запись QObjects
Я думаю, что я могу написать QObject
как это, используя в своих интересах Q_PROPERTY
s:
QDataStream &operator<<(QDataStream &ds, const Object &obj) {
for(int i=0; i<obj.metaObject()->propertyCount(); ++i) {
if(obj.metaObject()->property(i).isStored(&obj)) {
ds << obj.metaObject()->property(i).read(&obj);
}
}
return ds;
}
Который, если это правда, я не знаю почему QObject
Этот метод еще не реализован, потому что он довольно общий. Но это не главное. Как бы я прочитал файл? т.е. реализовать эту функцию?
QDataStream &operator>>(QDataStream &ds, Object &obj) {
return ds;
}
Я думаю, что я могу как-то использовать ds.readBytes
но как я могу получить длину собственности?
PS: если бы это не было очевидно, Object
мой пользовательский класс, который наследует от QObject
,
1 ответ
Решение
Это похоже на работу.
QDataStream &operator>>(QDataStream &ds, Object &obj) {
QVariant var;
for(int i=0; i<obj.metaObject()->propertyCount(); ++i) {
if(obj.metaObject()->property(i).isStored(&obj)) {
ds >> var;
obj.metaObject()->property(i).write(&obj, var);
}
}
return ds;
}
Спасибо Eugene.