c++ - QDataStream没有这样的方法,为什么可以将QVariant写入QDataStream?

标签 c++ qt qdatastream

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

相关文章:

c++ - 在没有分支的情况下测试固定集是否相等

c++ - 如何检测 W2A 转换是否完全成功

c++ - 为什么我不能使用 Qt 中的 QXmlStreamReader 解析 XML 文件?

c++ - (反)序列化枚举类

c++ - 从 QTcpSocket 读取(许多)值(快速)

c++ - TensorFlow图像识别输出格式c++

c++ - 为什么 int 指针 '++' 递增 4 而不是 1?

c++ - 是否可以在 QGridLayout 中设置小部件之间的最小空间?

qt - 更改资源(如图标)不会重新编译 .qrc 文件

python - 如何使用 QDataStream 在 Python 中打开一个 bin 文件