QGLBuilder builder;
    QGLSceneNode *root = builder.sceneNode();

    QGLMaterial *coneMaterial = new QGLMaterial;
    coneMaterial->setAmbientColor(Qt::gray);
    coneMaterial->setDiffuseColor(Qt::gray);
    QUrl urlLid;
    urlLid.setPath(QLatin1String(":/only_cone1_mod.jpg"));
    urlLid.setScheme(QLatin1String("file"));
    coneMaterial->setTextureUrl(urlLid);
    int coneMat = root->palette()->addMaterial(coneMaterial);

    builder.newNode()->setObjectName(QLatin1String("cone"));
    QGLCylinder myCylinder (0.75, 0.25, 0.75, 36, 25, true, true);
    myCylinder.setBaseEnabled(false);
    myCylinder.setTopEnabled(false);
    builder << myCylinder;
    builder.currentNode()->setMaterialIndex(coneMat);
    builder.currentNode()->setEffect(QGL::LitDecalTexture2D);
    cone = builder.currentNode();
    root->addNode(cone);

    QGLMaterial *domeMaterial = new QGLMaterial;
    QUrl url;
    url.setPath(QLatin1String(":/icecream1_mod.jpg"));
    url.setScheme(QLatin1String("file"));
    domeMaterial->setTextureUrl(url);
    int domeMat = root->palette()->addMaterial(domeMaterial);

    builder.newNode()->setObjectName(QLatin1String("dome"));
    QGLDome myDome(0.75);    
    builder << myDome;
    builder.currentNode()->setMaterialIndex(domeMat);
    builder.currentNode()->setEffect(QGL::LitDecalTexture2D);
    dome = builder.currentNode();

    cone->addNode(dome);
    cone->setPosition(QVector3D(1.0f,1.0,0));
    dome->setPosition(QVector3D(2.0f,2.0,0));

    cylinder = builder.finalizedSceneNode();
    cylinder->setParent(this);
-----------
output: