Сети, 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();
}