у меня есть 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
}
Я делаю что-то на отдельном интерфейсе, который вызывает updatePaintNode
из MyQQuickItem
быть уволеным. Если у меня есть указатель на MyQQuickItem на стороне cpp, вот так,
QQuickItem * my_quick_item_ptr = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("myquickitem");
Как можно отключить MyQQuickItem
updatePaintNode от вызова, когда я этого не хочу?
Вторичный вопрос: Если да, как восстановить его снова?
Если и когда updatePaintNode()
называется, скорее всего, внутренний материал сцены, который на самом деле не предназначался для изменения.
Может быть, попробуйте сделать что-то менее инвазивное, как:
QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) {
if (doNotUpdate) return oldNode;
// draw UI logic
return node;
}
Других решений пока нет …