0

我有一个QQuickItem派生类

// 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
}

我正在一个单独的 UI 上做一些事情,这会导致updatePaintNodeofMyQQuickItem被解雇。如果我在 cpp 端有一个指向 MyQQuickItem 的指针,就像这样,

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

MyQQuickItem当我不希望它被调用时,如何禁用它的 updatePaintNode?
第二个问题:如果是,如何再次恢复它?

4

1 回答 1

1

如果和何时updatePaintNode()被调用,很可能是场景图内部的东西,这些东西并不是真正打算修改的。

也许尝试做一些侵入性较小的事情,例如:

QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) {
  if (doNotUpdate) return oldNode; 
  // draw UI logic
  return node;
}
于 2017-09-07T12:16:42.990 回答