9
カスタムクラスのインスタンスをQSettings経由でレジストリに格納する必要があります。 Qtのドキュメントを読んだ後、私は必要な機能を実装したと思いますが、何も保存することはできません。QSettingsにカスタムクラスを作成して読み込む
ここに私のカスタムクラスがあります:レジストリ内
class SRSDefinition{
public:
SRSDefinition(QString name, QString definition) : qsName(name), qsDefinition(definition)
{
qRegisterMetaType<SRSDefinition>("SRSDefinition");
qRegisterMetaTypeStreamOperators<SRSDefinition>("SRSDefinition");
}
SRSDefinition(const SRSDefinition& original) : qsName(original.qsName), qsDefinition(original.qsDefinition) {}
SRSDefinition() : qsName(""), qsDefinition(""){}
~SRSDefinition();
QString qsName;
QString qsDefinition;
private:
friend QDataStream& operator << (QDataStream& out, const SRSDefinition& valeur) {out << valeur.qsName << valeur.qsDefinition; return out; }
friend QDataStream& operator >> (QDataStream& in, SRSDefinition& valeur) {in >> valeur.qsName >> valeur.qsDefinition; return in;}
};
Q_DECLARE_METATYPE(SRSDefinition)
QDataStream& operator << (QDataStream& out, const SRSDefinition& Valeur);
QDataStream& operator >> (QDataStream& in, SRSDefinition& Valeur);
省:レジストリから
QSettings settings("Organization", "Application");
QVariant variant;
variant.setValue(QVariant::fromValue<SRSDefinition>(m_srsSelected));
settings.setValue("Shared/RecentSRS", variant);
ロード:
QSettings settings("Organization", "Application");
m_srsSelected = settings.value("Shared/RecentSRS").value<SRSDefinition>();
レジストリ内の新しいキーが作成されますが、それはクラスの名前だけであると思う16進コードを含んでいます...
どのように効果的に値を格納するか?
本当に 'qRegisterMetaTypeStreamOperators(" SRSDefinition ");'をメインの解決済みの問題に移動するだけです。どうもありがとう !!! –
Ote