我有一个QQuickItem如下所示的派生类
class MyQQuickItem : public QQuickItem
{
Q_OBJECT
public:
MyQQuickItem(QQuickItem *parent = 0);
~ MyQQuickItem();
QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
};
我也有自己的TextureNode课。
我已经MyQQuickItem在 QML 端注册并嵌入main.qml如下。
MyQQuickItem {
id: my_quick_item
objectName: "MyQQuickItemObject"
visible: false
width: 500
height: 500
}
在某个信号的触发上,我已经连接到一个插槽MyQQuickItem,我调用this->update(). 这当然会触发updatePaintNode,我可以MyQQuickItem用我想要的新内容重新绘制我的内容。
是否可以触发updatePaintNodeaQQuickItem而无需在 qml 文件中声明它?
我想MyQQuickItem在 C++ 级别动态创建我的,并且根本没有在main.qml我如何做到这一点中定义或声明它?
核心问题:如何在 C++ 级别创建一个 QQuickItem,它可以通过调用 update 来更新新内容,以便触发 updatePaintNode?
更新:
我可以通过QQuickItem以下方式创建一个。
QQuickView * view = new QQuickView;
view->setSource(QUrl(QStringLiteral("qrc:/MyQQuickItem.qml")));
QQuickItem * myquickitem_object = view->rootObject();
但问题是updatePaintNode我打电话时无法开火this->update。我应该怎么做才能让我QQuickItem自己更新?