Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何禁用QQuickItem上的更新_C++_Qt_Qml_Scenegraph_Qquickitem - Fatal编程技术网

C++ 如何禁用QQuickItem上的更新

C++ 如何禁用QQuickItem上的更新,c++,qt,qml,scenegraph,qquickitem,C++,Qt,Qml,Scenegraph,Qquickitem,我有一个QQuickItem派生类 // Class class MyQQuickItem : public QQuickItem { Q_OBJECT } // updatePaintNode in cpp function QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) { // draw UI logic return

我有一个
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上做了一些事情,这会导致触发
MyQQuickItem
updatePaintNode
。如果我在cpp端有一个指向MyQQuickItem的指针,就像这样

QQuickItem * my_quick_item_ptr = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
QQuickItem*my_quick_item_ptr=m_qml_engine->rootObjects()[0]->findChild(“myquickitem”);
当我不想调用MyQQuickItem的updatePaintNode时,如何禁用它?

第二个问题:如果是,如何重新恢复?

如果和何时调用
updatePaintNode()
,则很可能是不打算修改的scenegraph内部内容

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

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

QQuickItem
类中有什么东西可以做到这一点吗?与其使用我自己的基于
doNotUpdate
的标志管理,我怀疑它是否会有标志来促进不存在的功能;)这只是一个额外的属性,您也可以这样做,因为您无论如何都在扩展类。有一个机会,这可能不是预期的工作,我只是给它作为一个想法,继续尝试,并报告结果,所以我可以删除答案,如果它是不好的。