Чтение / запись QObjects

Я думаю, что я могу написать QObject как это, используя в своих интересах Q_PROPERTYs:

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.

Другие вопросы по тегам