Qt3D - Retrieving Qml Viewport Element as C++ Object



  • Hey guys,

    I've been messing around with Qt5 and Qt3D / Quick3D a bit but I getting stuck trying to retrieve my qml Viewport Element as a c++ Viewport object.
    I can't seem to find the Viewport class include which is not indicated in the documentation :
    http://qt-project.org/doc/qt-5.0/qml-viewport.html
    http://doc-snapshot.qt-project.org/5.0/viewport.html
    I don't know if it's because it's deprecated or on the contrary not finalized yet.

    Then I'd like to make sure I'm retrieving my object the right way so I've posted a sample of my code :

    @
    bool QmlViewManager::initView()
    {
    // SET STARTING QML FILE
    this->viewer->setSource(QUrl::fromLocalFile("qml/Tepee3DSampleApp/main.qml"));
    this->viewer->show();
    //CONTROLLER BETWEEN QML VIEW AND MODELS
    this->viewer->rootContext()->setContextProperty("controller", this);
    // GET ROOT QML OBJECT
    this->rootQmlObject = this->viewer->rootObject();
    // SET SCREESIZE IN ROOT OBJECT
    this->rootQmlObject->setProperty("width", this->desktopWidget->screenGeometry(-1).width());
    this->rootQmlObject->setProperty("height", this->desktopWidget->screenGeometry(-1).height());
    // SHOW QML FILE IN FULLSCREEN
    QObject *tmpObj;
    if ((tmpObj = this->rootQmlObject->findChild<QObject >("viewport")))
    {
    this->viewport = (Viewport
    )tmpObj;
    std::cout << "ViewPort found" << std::endl;
    }
    if ((tmpObj = this->rootQmlObject->findChild<QObject >("root3dObject")))
    {
    this->root3dObject = (QQuickItem
    )tmpObj;
    std::cout << "Root3dObject found" << std::endl;
    }
    }
    @

    Any help will be very appreciated.

    Thanks



  • For those interested, you can't really retrieve a Viewport directly from qml as it is a QQuickItem. So either you retrieve it as a QQuickItem* and then try to insert your 3D items in it (not tested but it should work) or you do this on the qml side using loaders.


Log in to reply
 

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