我有一个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
用我想要的新内容重新绘制我的内容。
是否可以触发updatePaintNode
aQQuickItem
而无需在 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
自己更新?