Как сохранить изображение приложения, содержащего QGLWidget

Я ищу пример кода, который я могу использовать для сохранения изображения моего приложения Qt. Приложение представляет собой QMainWindow, содержащее QGLWidget. Я хочу иметь возможность захватывать все графические интерфейсы (включая рендеринг QGLWidget), но не смог найти для этого никакого примера кода.

Что я пробовал: QPixmap pixmap = QPixMap::grabWidget(QApplication::activeWindow); pixmap.save(QString("test.png"));

Это сохранит только графический интерфейс, но оставит черный фон вокруг QGLWidget.

Кто-нибудь знает, как это сделать в Qt 4.8.4?

Спасибо,


person Hien Nguyen    schedule 26.08.2015    source источник
comment
Этот ответ с форумов Qt рекомендует, чтобы вы делаете двухэтапный захват (один для QMainWindow и один для QGLWidget)   -  person Felipe Lema    schedule 27.08.2015
comment
Да, мне удалось сделать оба изображения. QPixmap содержит снимок экрана GUI, а QImage содержит снимок экрана QGLWidget. Однако я не знаю, как правильно установить маску, чтобы я мог объединить их. Есть ли пример кода, как это сделать?   -  person Hien Nguyen    schedule 27.08.2015
comment
Вы можете использовать позиционирование с geometry(...). Вам, вероятно, придется использовать какую-то вспомогательную функцию, но это должно вам помочь.   -  person Felipe Lema    schedule 27.08.2015