标签: qdatastream

使用 Qdatastream 从套接字读取数据并写入文件

我需要通过 QTcpSocket 接收二进制数据(读取浮点数)并使用 QDatastream 将它们写入 Qfile。但是我在使用 QDataStream 时遇到了一些问题。如下,我只能用这种方式来实现吗?

QDataStream in(socket);
in.setFloatingPointPrecision ( QDataStream::SinglePrecision);
float data;
in >> data;

QFile file("file.dat"); 
file.open(QIODevice::WriteOnly); 
QDataStream out(&file);
out << data;
Run Code Online (Sandbox Code Playgroud)

我必须创建两个 Qdatastream 并在读取它后将浮点数写入 Qfile。我的意思是,我可以读取流并将其直接通过一个 Qdatastream 写入文件以提高效率。

我对 QDataStream 的使用有一些盲点吗?有人可以帮我解决我的问题吗?非常感谢。

sockets qt file qdatastream

6
推荐指数
1
解决办法
3101
查看次数

如何将QAbstractItemModel序列化为QDataStream?

我已经设置了一个QAbstractItemModel并用数据填充了它.我的QTreeView小部件正确显示该模型中的每个数据.

现在,我想将该序列化的模型存储在二进制文件中(后来将cource加载到二进制文件中的模型中).那可能吗?

serialization qt qabstractitemmodel qstandarditemmodel qdatastream

5
推荐指数
1
解决办法
1643
查看次数

将QByteArray附加到QDataStream?

我必须QByteArray使用不同的数据填充a .所以我正在使用QDataStream.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';

stream << dataHex<< dataChar;
qDebug() << buffer.toHex();  // "0456"  This is what I want
Run Code Online (Sandbox Code Playgroud)

但是,我还想将QByteArray附加到buffer.

QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);

qint8 dataHex= 0x04;
qint8 dataChar = 'V';
QByteArray moreData = QByteArray::fromHex("ff");

stream << dataHex<< dataChar << moreData.data(); // char * QByteArray::data ()
qDebug() << buffer.toHex();  // "045600000002ff00"  I would like "0456ff"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c++ qt qbytearray qdatastream

3
推荐指数
1
解决办法
9692
查看次数

如何在Qt中使用QDataStream将自定义结构保存/加载到二进制文件中?

我将一个结构保存在二进制文件中,然后再加载。我发现一种方法是使用QVariant。这是我创建的简化的Qt Widget Application示例。但是当我运行它时,二进制文件仍然为空。你能帮我吗。另外,有没有更好的方法来做这种事情?

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>
#include <QFileDialog>
#include <QDataStream>
#include <QString>

#include "mystruct.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif
Run Code Online (Sandbox Code Playgroud)

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    /* create an object of the struct */
    myStruct * aStruct = new myStruct;
    aStruct->myStringVar = QString("aaaaa");

    /* …
Run Code Online (Sandbox Code Playgroud)

c++ qt qt5 qdatastream

3
推荐指数
1
解决办法
605
查看次数