ネットワークから PNG ファイルを含むバイト配列を受け取りました。これをピックスマップに設定し、テクスチャとして QGlWidget に設定する必要があります。以下のプログラムを実行すると、pixmap はデバッグ モードになり、何も含まれていません。ただし、bytes には、ネットワークから受信したバイト配列全体が含まれます。
void MainWindow::dataFromServer(QByteArray bytes)
{
// QByteArray bytes;
QBuffer buffer(&bytes);
QPixmap pixmap;
// pixmap = QPixmap::grabWidget(this);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format
emit sendPixmapToWidget(pixmap);
}
ここでは、ピックスマップをテクスチャに設定します。
void GlWidget::pixmapCatchFromForm(QPixmap pixmap)
{
deleteTexture(texture);
// image->loadFromData(bytes, "PNG");
texture = bindTexture(pixmap);
qDebug() << texture; // returns 1
updateGL();
}