How to disable updatePaintNode on a QQuickItem at will



  • I have a QQuickItem derived class

    // Class
    class MyQQuickItem : public QQuickItem {
      Q_OBJECT
    }
    
    // updatePaintNode in cpp function
    QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) {
    
      // draw UI logic
      return node;
    }
    
    // QML component
    MyQQuickItem {
      id: my_quick
      objectName: "myquickitem"
      width : 500
      height : 500
    }
    

    I am doing something on a separate UI which causes the updatePaintNode of MyQQuickItem to be fired. If I have a pointer to MyQQuickItem on cpp side like so,

    QQuickItem * my_quick_item_ptr = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
    

    How can disable MyQQuickItem's updatePaintNode from getting called when I don't want it to?
    Secondary question: If yes, How to reinstate it back again?


  • Lifetime Qt Champion

    Hi,

    What about just setting the visible property to false ?



  • @SGaist I am taking MyQQuickItem & rendering it off screen on a QQuickRenderControl to run some algorithms & do other stuff. To render MyQQuickItem I am setting its parent using SetParentitem to my off screen window. For this work properly, I need MyQQuickItem to not update itself & stay visible.

    Hence making visible false is not an option for me. Any other way to block the updatePaintNode call?


  • Lifetime Qt Champion

    So some kind of boolean property Q_PROPERTY (e.g. renderingEnabled) that you would check at rendering time to know if you should do anything ?



  • Hi Roby Brundle,
    I have the same problem.
    I also want to disable seft update for exist QQuickItem.
    Did you found the solution yet?


Log in to reply
 

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