Как отключить обновление на QQuickItem

у меня есть 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");

Как можно отключить MyQQuickItemupdatePaintNode от вызова, когда я этого не хочу?
Вторичный вопрос: Если да, как восстановить его снова?

0

Решение

Если и когда updatePaintNode() называется, скорее всего, внутренний материал сцены, который на самом деле не предназначался для изменения.

Может быть, попробуйте сделать что-то менее инвазивное, как:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]