Сети, QImage и как правильно передавать QByteArray

Когда клиент принимает сообщение пишет QImage(null), а если вывести в функции send message то все нормально

#include "client.h"
#include "ui_client.h"

Client::Client(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Client)
{
    ui->setupUi(this);
    m_socket = new QTcpSocket();

    ui->sb_port->setMaximum(16000);

    connect (ui->b_login, &QPushButton::clicked, this, &Client::login);
    connect (ui->b_send, &QPushButton::clicked, this, &Client::sendMessage);
    connect (m_socket, &QTcpSocket::connected, this, &Client::connectionEstablished);
    connect (m_socket, &QTcpSocket::readyRead, this, &Client::MessageReceived);
}

Client::~Client()
{
    delete ui;
}

void Client::login()
{
    QString address = ui->e_address->text();
    int port = ui->sb_port->value();

    m_socket->connectToHost(QHostAddress(address),port);
}

void Client::connectionEstablished()
{
    ui->stackedWidget->setCurrentIndex(1);
}

void Client::sendMessage()
{
    //for(int a = 0; a < 1; a--){
    ui->label->clear();
    QScreen *screen = QApplication::primaryScreen();
    if (!screen) {
        qDebug() << "Не удалось получить доступ к экрану!";
        return;
    }

    QPixmap screenshot = screen->grabWindow(0);

    QSize PicSize(1200, 1000);
    screenshot = screenshot.scaled(PicSize,Qt::KeepAspectRatio);

    QString fileName = "screenshot.png";
    QFile file(fileName);
    if (!file.open(QIODevice::WriteOnly)) {
        qDebug() << "Не удалось открыть файл для записи!";
        return;
    }

    //qDebug() << QFileInfo(file).absoluteFilePath();

    screenshot.save(&file, "PNG");
    qDebug() << "Скриншот сохранен в файл" << fileName;
    QImage image = screenshot.toImage();

    //qDebug() << buffer.data().toBase64();

    //qDebug() << image;
    QByteArray screen_Data;
    QBuffer buffer(&screen_Data);
    image.save(&buffer, "png");
    //QImage Image;
    //Image.loadFromData(screen_Data);

        //qDebug() << screen_Data;
    m_socket->write(screen_Data);
    m_socket->flush();
    //ui->label_3->clear();
    //ui->label_3->setPixmap(QPixmap::fromImage(Image));
    //ui->label_3->repaint();
    //}
}
void Client::MessageReceived()
{
    //qDebug() << "true";

    //qDebug() << m_socket->readAll();

    QImage Image;
    //screenshot.loadFromData(m_socket->readAll(), "PNG");

    Image.loadFromData(m_socket->readAll());

    //qDebug() << Image;

    ui->label_3->clear();
    ui->label_3->setPixmap(QPixmap::fromImage(Image));
    ui->label_3->repaint();
}

Ответы (0 шт):