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
的标志管理,我怀疑它是否会有标志来促进不存在的功能;)这只是一个额外的属性,您也可以这样做,因为您无论如何都在扩展类。有一个机会,这可能不是预期的工作,我只是给它作为一个想法,继续尝试,并报告结果,所以我可以删除答案,如果它是不好的。