1

我可以毫无问题地将 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)

4

1 回答 1

2

因为operator<<是在 QVariant 中声明的。

根据QDataStream

除了此处记录的重载流运算符之外,您可能希望序列化为 QDataStream 的任何 Qt 类都将具有适当的流运算符声明为该类的非成员。

在 QVariant 的源代码中,你可以找到两个非成员函数(很遗憾,它们没有在 QVariant 的文档中列出):

QDataStream& operator<<(QDataStream &s, const QVariant &p)
QDataStream& operator>>(QDataStream &s, QVariant &p)
于 2014-11-09T05:04:27.857 回答