如何禁用Qquickitem上的更新

How to disable update on a QQuickItem

本文关键字:更新 Qquickitem 何禁用      更新时间:2023-10-16

我有一个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上做某事,这会导致MyQQuickItemupdatePaintNode发射。如果我在CPP一侧有指向myqquickitem的指针,

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

当我不想要它时,如何禁用 MyQQuickItem s updatepaintnode?
次要问题:如果是,如何再次恢复它?

if,何时称为 updatePaintNode()是很可能不是真正打算修改的场景图内的东西。

也许尝试做一些较少的入侵:

QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) {
  if (doNotUpdate) return oldNode; 
  // draw UI logic
  return node;
}