Как добавить карту QML в QGraphicscene?

В приложении есть QGraphicscene(mpscene) с QGraphicsView(mpGraphicsView). Я пытаюсь добавить объект карты qml в QGraphicscene(mpscene), но представление карты появляется отдельно, как всплывающее окно. Как я могу добавить эту карту в QGraphicscene(mpscene)?

Ниже приведены несколько методов, которые я пробовал, как было предложено в других сообщениях.

метод1

 PlaneTrack *blr2bgm = new PlaneTrack; //Cpp object set to root context
 QQmlEngine *engine = new QQmlEngine(mpGraphicsView);
 QQuickWidget *view = new QQuickWidget(engine, mpGraphicsView);
 view->setResizeMode(QQuickWidget::SizeViewToRootObject);
 view->rootContext()->setContextProperty("blr2bgm",blr2bgm);
 view->setSource(QUrl(QStringLiteral("qrc:/PlaneTrack.qml")));
 mpScene->addWidget(view);    

метод2

 PlaneTrack *blr2bgm = new PlaneTrack; //Cpp object set to root context
 QQuickView *view = new QQuickView();
 view->rootContext()->setContextProperty("blr2bgm",blr2bgm);
 view->setSource(QUrl(QStringLiteral("qrc:/PlaneTrack.qml")));
 view->setResizeMode(QQuickView::SizeRootObjectToView);
 QWidget *container = QWidget::createWindowContainer(view);
 container->setMinimumSize(view->size());
 container->setFocusPolicy(Qt::TabFocus);
 mpScene->addWidget(container);

person Sagar A W    schedule 04.10.2018    source источник
comment
пожалуйста, покажите свой .qml   -  person eyllanesc    schedule 04.10.2018
comment
@eyllanesc то же, что и пример planespotter Qt   -  person Sagar A W    schedule 04.10.2018
comment
Я взял код qml примера qt для корректировщика самолетов, добавив его в сцену.   -  person Sagar A W    schedule 04.10.2018
comment
@eyllanesc загрузка файла qml в графическую сцену зависит от файла qml?   -  person Sagar A W    schedule 05.10.2018
comment
Я провел тесты, во-первых, если вы получаете 2 окна, возможно, потому, что корень QML - это окно или окно приложения, если это так, измените его на элемент, с другой стороны, я видел, что это невозможно внедрить, поскольку GraphicScene не может render, например, в тесте я заставил QML показывать себя, и через некоторое время T добавляется к сцене, он не отображается правильно.   -  person eyllanesc    schedule 05.10.2018
comment
@eyllanesc да, вы правы, окно есть.   -  person Sagar A W    schedule 05.10.2018


Ответы (1)


В файле PlaneTrack.qml был контейнер window, который я изменил на Item. Следующий код добавляет qml к графической сцене.

    PlaneTrack *blr2bgm = new PlaneTrack; // cpp class object data interact

    QQuickWidget *view = new QQuickWidget();
    view->rootContext()->setContextProperty("blr2bgm",blr2bgm);
    view->setSource(QUrl(QStringLiteral("qrc:/PlaneTrack.qml")));
    view->setMinimumSize(300, 300);
    view->setResizeMode(QQuickWidget::SizeRootObjectToView);

    mpScene->addWidget(view); // adding to Graphic scene 
person Sagar A W    schedule 05.10.2018