One QGLWidget that manage QGLWidget childs



  • Hi devs.

    I would like to know if the following use case is supported by QT.

    I have one "TopLevel" QGLWidget :

    @class ParentGLWidget : public QGLWidget {
    ...
    ParentGLWidget(QGLContext * context, QWidget *parent = 0) : QGLWidget(context, parent) {... }
    ...
    void initializeGL()
    {
    qglClearColor(qtPurple.dark());
    glEnable(GL_CULL_FACE);
    ...
    }

    void paintGL()
    {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    }
    
    void resizeGL(int width, int height)
    {
    glViewport((width - side) / 2, (height - side) / 2, side, side);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrthof(-0.5, +0.5, -0.5, +0.5, 4.0, 15.0);
    glMatrixMode(GL_MODELVIEW);
    }
    

    }@

    There are other "GLWidget" that should be drawn inside the top level widget context :
    @class ChildGLWidget : public QGLWidget {
    ...
    ChildGLWidget(QGLContext * context, QWidget *parent = 0) : QGLWidget(context, parent) {... }
    ...
    void initializeGL()
    {
    // optional
    // at least, should not overwrite what have been done in the top level widget
    }

    void paintGL()
    {
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -10.0);
    glRotatef(xRot, 1.0, 0.0, 0.0);
    // draw some object in the gl world
    }
    
    void resizeGL(int width, int height)
    {
     // optional
     // at least, should not overwrite what have been done in the top level widget
    }
    

    }@

    I would like to use them like this :
    @
    QGLContext * context = new QGLContext(QGLFormat(QGL::SampleBuffers));
    ParentGLWidget * parent = new ParentGLWidget(context);
    ChildGLWidget * child_1 = new ChildGLWidget(context, parent);
    ChildGLWidget * child_2 = new ChildGLWidget(context, parent);
    @

    The childs could be managed (drawing, deletion, ...) by the parent (like traditional widgets do).

    II haven't been able to run such a use case.

    Is there any design flaw in this use case ?

    Thank for your help.



  • If you comment out the childs creation, does the ParentGLWidget show up correctly (so without childs)?



  • Yes.

    My test code works if display independently each widget in different contexts.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.