问题标签 [qdatastream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

c++ - 禁用 std::optional 的转发构造函数

我使用模板转换运算符扩展了 QDataStream,以便数据流从自身加载并转换为任何支持的类型,如下所示:

并且可以通过重载运算符 >> 来添加对 QDataStream 不支持的类型的支持,例如:

这个想法是能够直接从流中构造非默认可构造类,如下所示:

这很好用,除非成员是std::optional. std::optional的转发构造函数被调用而不是ConvertibleQDataStream模板转换运算符:

可以禁用std::optional的转发构造函数吗?或另一种解决方法。

0 投票
0 回答
187 浏览

c++ - std::map 上的 QDataStream 运算符>>,如何在没有默认构造函数的情况下进行初始化?

Stackoverflow 上的第一篇文章!

所以总结一下我的问题:

我正在尝试序列化一个自定义类,其中包含另一个自定义类的映射(std::map)。

所以对于序列化我有:

对于反序列化,我有:

所以这里的问题是我没有(也不是真的想要)MyClass 的默认构造函数。当然,我不能像这样声明我,这引出了我的问题:你将如何序列化/反序列化这个自定义类?

我尝试使用 malloc 和指针:

但是在地图中插入 MyClass 对象时问题仍然存在:

引发错误:surchargesqdatastream.cpp:84:18:错误:没有匹配的构造函数用于初始化“std::pair”

0 投票
2 回答
77 浏览

c++ - 如何从其抽象母类上的指针初始化子类?

所以我是 C++ 新手,我的问题是这个:我有一个抽象类,它作为多个子类(它们也有其他子类)。我正在尝试使用多态性来序列化和反序列化这些子类,并且在我的抽象类中具有:

所以我的问题很简单:当我反序列化时,我想调用反序列化函数,但我还不知道我正在检索哪个子类。

函数是这样的:

我不知道我是否完全清楚,但基本上我要做的是实例化并调用流对应的任何子类,然后调用反序列化。可能吗 ?

谢谢!

编辑:我的第一种方法是同时提供 QDataStream 我的子类名称,以便我知道要实例化哪个类:

但我觉得这真的不是一个干净的 OOP 方式!

0 投票
1 回答
658 浏览

c++ - Qt 模型拖放 - 无法保存类型 QJsonValue

我有一个通过拖放实现QAbstractListModel来显示一个:QJsonArray

当我在我的mimeData()方法中调用基本实现时,出现此错误:

QVariant::save: 无法保存类型 'QJsonValue' (type id: 45)
ASSERT failure in QVariant::save: "Invalid type to save"

所以没问题,就像在文档中描述的那样,我添加了这些行:

但我有同样的问题,我做错了什么?

0 投票
1 回答
126 浏览

serialization - 如何保存/序列化 QVector 的 QVariant

我不知道如何解决这个问题:

任何想法/帮助都会很棒。大多数谷歌结果都是关于序列化自定义类而不是整数:/

蒂亚!

0 投票
0 回答
170 浏览

c++ - QFile.read() 值转换为 qDebug() 转换为 QDataStream

我想知道为什么:

我的 file.exe 通过 qDebug() 给了我这个输出:

而我的 .txt 得到另一个值。

如果我复制粘贴上面的输出并写

相反,它完美地工作。所以我猜 qDebug() 正在做一个转换,但是哪一个呢?

提前致谢

0 投票
0 回答
184 浏览

qt - 从 QTcpSocket 读取时 QDataStream 中的数据不完整

所以我有一个奇怪的问题,当我在 QTcpSocket 上读取数据(QDataStream)时:一些数据似乎丢失了。bytesAvailable() 函数将返回要读取的适当字节数,但 QDataStream 似乎并没有保存所有字节。

首先,这是数据的外观:

在此处输入图像描述

bufferX 总是包含 768 个浮点数,而 bufferY 总是包含 5376 个浮点数。因此,我希望发送的总数据为(不包括块大小):int + 768 floats + 5376 floats = 4 + 3072 + 21504 = 24580 bytes

现在,这里是发件人代码:

这是接收方代码:

现在,我注意到的第一件奇怪的事情是 nBytesAvailable 的值总是 49158,大约是我预期的两倍。我收到的字节数是预期的两倍怎么办?

其次,由于我有所有这些字节可用,我希望 QDataStream 能够正确填充缓冲区。然而,在 315 到 350 次浮点数之后,QDataStream 似乎包含不可用的数据。也就是说,wBufferX将在其前 315-350 个索引中定义(并纠正)值,然后再定义未知值。我不明白这是怎么回事,因为bytesAvailable()清楚地表明套接字上有近 50 000 个字节。我错过了什么?

非常感谢您的帮助!谢谢!

0 投票
2 回答
145 浏览

c++ - 如何使用 QDatastream 通过 QTcpSocket 发送 QSqlQueryModel?

我想用 QDatastream 和 QTcpSocket 将 QSqlQueryModel 发送到另一个客户端。我想删除一些行并向 QSqlQueryModel 添加一些额外的行(不更改数据库)并将其发送给客户端,就像这个伪代码一样: -

如何在不创建新的模型深层副本的情况下实现这一点。在客户端,它应该只接收带有数据的模型,以便我可以在 QML 中显示它。

0 投票
1 回答
135 浏览

c++ - 读取 QDataStream 中的特定对象并计算存储的对象数

我正在二进制文件中写入一些对象,我想读回它们。为了向您解释我要做什么,我准备了一个简单的示例,其中包含一个包含儿童的 QString 名称和 QList 名称的类 User。请看下面的代码。

我成功地在我的二进制文件中写入了我想要的所有用户。但是,我希望能够在不将所有内容加载到内存的情况下:

  • 要知道二进制文件中存储了多少用户,
  • 通过给出该用户的名称来读取该用户。

到目前为止,我一直使用 QDataStream 并且我正在重载 << 和 >> 操作符以进行序列化。也许我想要的这种方法是不可能的。您能否为我提供一些使用 QDataStream 或其他方法取得成功的提示?

0 投票
1 回答
99 浏览

qt - 为什么 QDatastream 没有给出正确的输出

在给定的代码中,我首先在流中插入 1 个数字,然后将该值放入名为 Variable 的测试中。

当我打印变量时,我得到的输出是 0 而不是 1。

这是代码。