我正在尝试实现一个全局设置对象,即保存/加载任意Qt对象,
但我想知道这是否是正确的方法,因为我只存储相关的QString,QList,QSet(容器),
QObject *get (const QString & key);
void save (const QString & key, QObject *value);
使用内部哈希表QHash<QString,QObject*>
。
这是“官方”方式吗?
答案 0 :(得分:0)
Qt仅为QVariant类型提供了开箱即用的序列化。例如,QJson库处理该行为。但您可以为每个需要的类调用Q_DECLARE_METATYPE以在QVariant中注册它。因此,用户定义的QVariant存储为原始字节。如果您想要输出格式更具可更新性和特定性,那么您应该实现QDataStream输入(&gt;&gt;)和输出(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;