QJson好象是不支持quint16类型的属性的,这只是本座的猜测。如果一个QObject派生类的属性中有类型为quint16的属性的话,则使用QJson序列化之后,得到的是一个空字符串。遇到这种问题,将quint16类型的属性改成int类型就可以咯。
例如:
这样的对象序列化后是空的:
class TunnelResultObject : public QObject
{
Q_OBJECT
Q_PROPERTY ( bool Success READGetSuccessWRITESetSuccess) //!<隧道开启是否成功。
Q_PROPERTY ( quint16 Port READGetPortWRITESetPort) //!<隧道的端口号。
public :
quint16 GetPort(); //!<获取隧道的端口号。
bool GetSuccess(); //!<获取隧道开启是否成功的状态信息。
void SetPort( quint16 UserId); //!<设置端口号。
void SetSuccess( bool PswdIsRt); //!<设置隧道开启是否成功。
explicit TunnelResultObject ( QObject *parent = 0 );
private :
bool Success ; //!<隧道开启是否成功。
quint16 Port ; //!<隧道的端口号。
};
而这样的对象序列化之后是正常的:
class TunnelResultObject : public QObject
{
Q_OBJECT
Q_PROPERTY ( bool Success READGetSuccessWRITESetSuccess) //!<隧道开启是否成功。
Q_PROPERTY ( int Port READGetPortWRITESetPort) //!<隧道的端口号。
public :
quint16 GetPort(); //!<获取隧道的端口号。
bool GetSuccess(); //!<获取隧道开启是否成功的状态信息。
void SetPort( quint16 UserId); //!<设置端口号。
void SetSuccess( bool PswdIsRt); //!<设置隧道开启是否成功。
explicit TunnelResultObject ( QObject *parent = 0 );
private :
bool Success ; //!<隧道开启是否成功。
quint16 Port ; //!<隧道的端口号。
};
HxLauncher: Launch Android applications by voice commands