2017-01-11 11 views
0

Мне нужно сделать снимок экрана с виджетами с содержимым OpenGL (используя классы SoQt 1.5.0 под Qt5.5) и сохранить его в QImage. То, что я пытался до сих пор:Захват виджета с содержимым OpenGL под Qt5.5

  • использования grabFrameBuffer из класса QGLWidget (который, кажется, устаревших, так как Qt5): это приводит к черной области
  • с использованием grabFramebuffer из класса QOpenGLWidget: захват даже не работает, и нет ни одной области, посвященный ему
  • использованием renderPixmap из класса QGLWidget: это приводит к белой области

проблема, кажется, находится в этом, если условие (которое используется QGLWidget: : grabFrameBuffer() под Qt4.8 и которые мы пытаемся перейти на Qt5.5):

if(dynamic_cast<QGLWidget*>(rendererCourant->getNormalWidget())) 
{ 
    ((QGLWidget*)rendererCourant->getNormalWidget())->updateGL(); 
    _image = ((QGLWidget*)(rendererCourant->getNormalWidget()))->grabFrameBuffer(); 
} 

ли кто-то есть намек на этот вопрос?

ответ

0

Одна вещь, которую вы можете сделать, это вызов:

auto fb = QOpenGLWidget->defaultFramebufferObject(); 

Это должно быть фреймбуфера что тогда QOpenGLWidget будет подходило к и затем использовать OpenGL, чтобы захватить то, что вам нужно.