我想我可以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;
}
Run Code Online (Sandbox Code Playgroud)
哪个,如果这是真的,我不知道为什么QObject没有实现该方法,因为它非常通用.但这不仅仅是重点.我怎么读这个文件?即,实现这个功能?
QDataStream &operator>>(QDataStream &ds, Object &obj) {
return ds;
}
Run Code Online (Sandbox Code Playgroud)
我想我可以以某种方式使用,ds.readBytes但我怎么能得到该物业的长度?
PS:如果不明显,Object我的自定义类是继承的QObject.
这似乎有效.
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;
}
Run Code Online (Sandbox Code Playgroud)
感谢Eugene.
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |