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