我可以毫无问题地将 QVariant 写入 QDataStream 并从 QDataStream 读取 QVariant。
QByteArray byteArray;
QDataStream outStream(&byteArray, QIODevice::WriteOnly);
QVariant outVar(QString("hello"));
outStream << outVar;
QVariant inVar;
QDataStream inStream(&byteArray, QIODevice::ReadOnly);
inStream >> inVar;
我的问题是,当 QDataStream 没有方法 operator<<(QVariant v)
时,上面的代码如何编译和正常工作? ?
最佳答案
因为 operator<<
在 QVariant 中声明。
根据 QDataStream ,
In addition to the overloaded stream operators documented here, any Qt classes that you might want to serialize to a QDataStream will have appropriate stream operators declared as non-member of the class.
在QVariant的源代码中,你可以找到两个非成员函数(不幸的是,它们没有列在QVariant的文档中):
QDataStream& operator<<(QDataStream &s, const QVariant &p)
QDataStream& operator>>(QDataStream &s, QVariant &p)
关于c++ - QDataStream没有这样的方法,为什么可以将QVariant写入QDataStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26824712/