Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何在QSettings中存储自定义类型?_Qt - Fatal编程技术网

Qt 如何在QSettings中存储自定义类型?

Qt 如何在QSettings中存储自定义类型?,qt,Qt,从API文档: 使用qRegisterMetaType()和注册的自定义类型 qRegisterMetaTypeStreamOperators()可以使用QSettings存储 我该怎么做?我得到一个错误: qRegisterMetaTypeStreamOperators处的模板参数列表太少 我的代码: class LineUser { public: int uId; QString passwd; qint8 statusType; }; Q_DECLARE_MET

从API文档:

使用qRegisterMetaType()和注册的自定义类型 qRegisterMetaTypeStreamOperators()可以使用QSettings存储

我该怎么做?我得到一个错误:

qRegisterMetaTypeStreamOperators处的模板参数列表太少

我的代码:

class LineUser {
public:
    int uId;
    QString passwd;
    qint8 statusType;
};

Q_DECLARE_METATYPE(LineUser)
QDataStream &operator<<(QDataStream &out, const LineUser &myObj) {
    out<<myObj.uId<<myObj.passwd<<myObj.statusType;
    return out;
}
QDataStream &operator>>(QDataStream &in, LineUser &myObj) {
    in>>myObj.uId>>myObj.passwd>>myObj.statusType;
    return in;
}
qRegisterMetaTypeStreamOperators<LineUser>("LineUser");
类行用户{
公众:
int-uId;
QString密码;
秦T8型;
};
Q_DECLARE_元类型(LineUser)
QDataStream和operatormyObj.statusType;
返回;
}
qRegisterMetaTypeStreamOperators(“LineUser”);

qRegisterMetaTypeStreamOperators
是一个函数,而不是宏


您需要从.cpp文件调用它,例如在main()方法中

谢谢。。。但它会产生一个新的错误:与“运算符”不匹配。请在main.cpp中定义运算符函数。。在调用operator之前,您可能还需要
#include
,如果您没有这么做,那么您是否正在尝试存储LineUser*(指针)而不是LineUser对象?如果你想非常感谢你的话,你也可以用这个新错误提出一个新问题,我已经解决了。。QDataStream和操作员(QDataStream和in、LineUser和myObj);让这些功能成为朋友。。。