void RunnerView::save() { if (m_socket->isWritable()) { QImage image(grabFramebuffer()); QBuffer buffer; buffer.open(QBuffer::WriteOnly); QDataStream out(&buffer); out << image; int size(buffer.size()); if (m_shared->isAttached()) { if (m_shared->size() < size && !m_shared->detach()) { return; } } if (!m_shared->isAttached()) { if (!m_shared->create(size)) { qWarning("RunnerView::save - m_shared create error"); return; } } m_shared->lock(); char* to((char*)m_shared->data()); const char* from(buffer.data().data()); memcpy(to, from, qMin(m_shared->size(), size)); m_shared->unlock(); buffer.close(); Message message(m_appUid, MessageType::Update); message.write(m_socket); } }
void RenderWidget::takeScreenshot() { update(); QImage imageToSave = grabFramebuffer(); QString filename = QFileDialog::getSaveFileName(this, "Save a screenshot", QString(), "Images (*.png *.jpg)"); if (!filename.isEmpty()) { imageToSave.save(filename); } }
OpenGLWidget::~OpenGLWidget() { grabFramebuffer().save(QString(SOURCE_DIRECTORY) + "result.jpg"); }