1

我有一个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自己更新?

4

0 回答 0