- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过QTextStream
重复写入/读取QBuffer
对象。首先我构造两个对象:
QBuffer b;
b.open(QIODevice::ReadWrite);
QTextStream s(&b);
// Setup text stream here
然后我写下三个不同的信息部分并读回:
s << "Test" << 666 << endl << flush;
s.seek(0);
qDebug() << s.readAll();
s << "X" << endl << flush;
s.seek(0);
qDebug() << s.readAll();
s << "Test" << 777 << endl << flush;
s.seek(0);
qDebug() << s.readAll();
当然我没有得到我之前写的数据部分,但是累积的数据:
"Test666\n"
"Test666\nX\n"
"Test666\nX\nTest777\n"
我可以执行自适应搜索调用来获取正确的数据,但我不希望QBuffer
无限增长。
我尝试在写入之间调用 s.reset()
,但结果是一样的。直接在缓冲区上调用 reset()
或 open()/close()
会产生损坏的结果(这是预期的,因为流被绕过了):
"Test666\n"
"X\nst666\n"
"Test777\n"
我或许可以为每个循环构建一个新缓冲区,打开它并将其附加到流,但那很慢。
这个用例是否有合适且快速的解决方案?
最佳答案
您可以直接使用QBuffer::buffer()
访问QBuffer
的内部QByteArray
存储,然后使用QByteArray 删除所有内容::清除()
。然后手动seek()
回到开头。
QBuffer b;
b.open(QIODevice::ReadWrite);
QTextStream s(&b);
s << "Test" << 666 << endl << flush;
s.seek(0);
qDebug() << s.readAll();
b.buffer().clear();
s.seek(0);
s << "X" << endl << flush;
s.seek(0);
qDebug() << s.readAll();
b.buffer().clear();
s.seek(0);
s << "Test" << 777 << endl << flush;
s.seek(0);
qDebug() << s.readAll();
"Test666\n"
"X\n"
"Test777\n"
QTextStream
也有一个 constructor直接获取QByteArray
并自动创建QBuffer
,在这种情况下可能会节省一些代码。
关于c++ - 通过 QTextStream 重复写入和读取 QBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722277/
我正在编写一个 PyQt5 应用程序,但我认为这个问题对于 PySide2 和 Qt 也有效。我正在尝试将声音数据(sinuosids)写入缓冲区,然后在无缝循环中播放。但是,当我到达缓冲区末尾并返回
嗨,我认为 QMovie 可以采用 QBuffer 吗?这是我的代码。 a = QByteArray(img) b = QBuffer(a) self.movie = QMovie(b, 'GIF')
我正在编写一个 Qt (4.6) 应用程序,负责从 usb acm 调制解调器设备读取数据。从设备中读取原始二进制和 (ascii) 字符数据的混合。我有一个线程负责在数据可用时不断地将数据从设备读取
我正在尝试通过QTextStream 重复写入/读取QBuffer 对象。首先我构造两个对象: QBuffer b; b.open(QIODevice::ReadWrite); QTextStream
我正在做这样的事情: QImage image(width, height, QImage::Format_RGB32); frame.fill(QColor(255, 255, 255).rgb()
我正在寻找在 C++ Qt5.6 中从 void * data 和 long data_size 创建 QBuffer 的最简单和优雅的方法。 我尝试将 void 转换为 char 指针并使用 QBy
我在 RAM 中有一个 QBuffer ,其中包含一个临时 wav 文件,我想让用户从任意位置收听它,想听多少次就听多少次。但是,它只允许播放一次,不允许重播。如果我播放文件 (QUrl.fromLo
我的目标是创建一个 numpy 数组并将其字节数据转换为 QBuffer。我想知道如何正确设置 DataSize、ByteStride 和 Count。请参阅下面的代码: self.mesh = Qt
使用我现在拥有的代码,我可以成功地播放文件中的 .mp3 数据。但是我需要使用 QtCore.QBuffer(不是来自文件)播放相同的数据。当我使用文档的示例时,它会出现意外类型的 QBuffer 错
我是一名优秀的程序员,十分优秀!