Como obter uma instância válida de um QQuickItem no lado do C ++

Tudo bem. Pesquisei bastante, mas ainda não tenho uma boa solução. Eu sou novo emQt. Eu tenho uma classe que é umaQQuickItem igual a,

class MyQuickItemClass : public QQuickItem
{
    Q_OBJECT
    SetInfo(SomeCppClass object)
};

Eu faço umqmlRegisterType no meumain.cpp para registrá-lo noqml lado assim,

qmlRegisterType <MyQuickItemClass> ("MyQuickItemClass", 1, 0, "MyQuickItemClass");

Tudo bem até aqui. Mas -> Eu quero definir uma instância de objeto e algumas propriedades em MyQuickItemClass que também tenham alguma lógica C ++ e depois passar oMyQuickItemClass opor-se aqml. Ou obtenha uma instância válida deMy,QuickItemClass do Qml.Como posso obter uma instância vlidMyQuickItemClass instância de objeto deQML no lado C ++ emmain.cpp ?

Eu tentei fazer o seguinte aprendizado no linkaqui. Mas essa técnica cria dois objetos separados deMyQuickItemClass. Um deQML, e um dec++ lado. Portanto, não funciona para mim.

A seguir, é como estou tentando fazer isso depois de muita pesquisa.

int main(int argc, char *argv[]) 
{
  qmlRegisterType< MyQuickItemClass >("MyQuickItemClass", 1, 0, "MyQuickItemClass");
  QQmlApplicationEngine engine;
  SomeCppClass someCppClassObject;
  someCppClassObject.updateSomething();

  MyQuickItemClass myquickItemObject;
  myquickItemObject.SetInfo(someCppClassObject);
  engine.rootContext()->setContextProperty("myquickItemObject", &myquickItemObject);

  engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
  return app.exec();
}

Mas, ao fazer o procedimento acima, obtém o construtor deMyQuickItemClass ligou duas vezes. Uma vez decpp lado quando eu criei um objeto, e uma vez deqml lado. Verificou isso colocando um ponto de interrupção no construtor deMyQuickItemClass também. Como um resultado,someCppClassObject que eu tinha definido é nulo por dentroMyQuickItemClass quando o programa é executado. Como o qml fez a chamada final paraMyQuickItemClass instanciar, ignorando assim oMyQuickItemClass objeto que eu crieimain.cpp.

Aqui está o meuqml código paraMyQuickItemClass:

import QtQuick 2.5
import MyQuickItemClass 1.0

ParentContainerItem {
  id: parentItem
  color: "black"

  MyQuickItemClass {
      id: myQuickItemID
      visible: true
      objectName: "myQuickItem"

      property bool someProperty1: false
      property bool someProperty2: true

      anchors.top: parent.top
      anchors.horizontalCenter: parent.horizontalCenter
  }

  //Other qml components
}

E esta é a classe C ++ cujo objeto precisa ser definido emMyQuickItemClass.

SomeCppClass {
  //Pure C++ class. No Qt
}

Por favor, note que eu preciso manterMyQuickItemClass derivado deQQuickItem. Por favor sugira...

questionAnswers(2)

yourAnswerToTheQuestion