OpenGL con hilos con problema QGLWidgets compartido con Qt 5.1

Utilizo dos QGLWidgets. Una para cargar texturas y otra para renderizar, pero no funciona.

Utilicé la siguiente explicación dehttp://blog.qt.digia.com/blog/2011/06/03/threaded-opengl-in-4-8/

Subproceso de carga de texturas Cargar muchas (o grandes) texturas suele ser una operación costosa debido a la cantidad de datos que se envían a la GPU. De nuevo, esta es una de esas operaciones que pueden bloquear innecesariamente su hilo principal. En 4.8 puede resolver este problema creando un par de QGLWidgets compartidos. Uno de los widgets se actualiza en un subproceso independiente, pero nunca se hace visible en la pantalla. El hilo principal informa al subproceso de carga qué imágenes cargar y al subproceso de carga simplemente llama a bindTexture () en cada una de estas imágenes y luego notifica el hilo principal cuando cada una ha finalizado para que se pueda dibujar en la pantalla.

Con Qt 4.8 con MinGW funciona bien, pero ahora uso Qt 5.1 con MSVC. Recibo un error cuando quiero hacer que el widget en el hilo actual:

No se puede hacer que QOpenGLContext sea actual en un hilo diferente

Entiendo el error pero como puedo solucionarlo. Cuando no configuro el widget actual, no puedo cargar texturas (congelado en la función bindTexture ()). También me pregunto por qué funciona con mi antigua versión QT. Cuando aparece el error, puedo presionar "ignorar error" y el programa carga las texturas de todos modos.

Aquí hay un código de ejemplo:

Cargando texturas:

GLContext::GLContext(QWidget *parent, QGLWidget *myDisplayWidget) :
  QGLWidget(parent,myDisplayWidget)
{
}

...

GLContext* myTextureWidget = new GLContext(this,myDisplayWidget);

...

void TextureLoadingThread::run()
{    
    makeCurrent(); //Here is the bug!
    QImage *im = new QImage(filename);
    GLuint textid = myTextureWidget->bindTexture(*im, GL_TEXTURE_2D, GL_RGBA);
}

EDITAR:

Cuando muevo el contexto de myTextureWidget al hilo en el que funciona, pero luego obtengo el MakeCurrent Error de la API cuando se creará la GUI (el seguimiento de la pila se indica en la función QLineEdit :: setPlaceHolderText en QT5Widgetsd). Cuando muevo myTextureWidget al hilo unos segundos después de que se haya mostrado la ventana principal, todo funciona bien. Pero, ¿cómo puedo saber cuándo qt terminó todas las cosas de construcción GUI? Trazo la GUI a un QGraphicsView con una ventana gráfica QGLWidget.

myTextureWidget->context()->moveToThread(myTextureLoadingThread);

Respuestas a la pregunta(2)

Su respuesta a la pregunta