捕获Qt小部件作为图像文件

eje*_*jel 9 opengl qt jpeg

我正在使用QGLWidget(用于OpenGL的Qt小部件),并希望能够将小部件显示的屏幕捕获为JPEG文件.我怎样才能做到这一点?是否有一个函数可以将窗口小部件当前显示的内容作为图像返回?

Mic*_*elM 16

通常使用OpenGL,您可以使用该glReadPixels()函数从帧缓冲区读取.这会将帧缓冲内容放入已分配的缓冲区中.然后,您需要一个将其转换为JPEG的函数.

但是,在使用时QGLWidget,可以使用其grabFrameBuffer()方法将帧缓冲区内容作为QImage对象获取.这可能是更好的方法.您可以获取帧缓冲内容,然后使用QImage::save()保存到文件.

如果你转到Qt 5 QOpenGLWidget,你会发现它有类似的 grabFrameBuffer()方法.


roo*_*oop 9

QImage img(mywidget.size());
QPainter painter(&img);
mywidget.render(&painter);
img.save("/some/file.jpg");
Run Code Online (Sandbox Code Playgroud)