Tôi cần lưu trữ các phiên bản của một lớp tùy chỉnh trong sổ đăng ký qua QSettings. Sau khi đọc từ tài liệu của Qt, tôi nghĩ rằng tôi đã thực hiện các chức năng cần thiết nhưng tôi không quản lý để tiết kiệm bất cứ điều gì.Viết và đọc lớp tùy chỉnh cho QSettings
Đây là lớp học của tôi tùy chỉnh:
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);
tiết kiệm trong registry:
QSettings settings("Organization", "Application");
QVariant variant;
variant.setValue(QVariant::fromValue<SRSDefinition>(m_srsSelected));
settings.setValue("Shared/RecentSRS", variant);
tải từ registry:
QSettings settings("Organization", "Application");
m_srsSelected = settings.value("Shared/RecentSRS").value<SRSDefinition>();
Một khóa mới trong registry được tạo ra, nhưng nó chứa mã hex mà tôi nghĩ chỉ là tên của lớp ...
Bất kỳ ý tưởng nào về cách lưu trữ hiệu quả các giá trị?
Thật vậy, chỉ cần di chuyển 'qRegisterMetaTypeStreamOperators (" SRSDefinition ");' để giải quyết chính vấn đề của tôi. Cảm ơn rất nhiều !!! –
Ote