Как добавить карту QML в QGraphicscene?
В приложении есть QGraphicscene(mpscene)
с QGraphicsView(mpGraphicsView)
я пытаюсь добавить объект карты qml в QGraphicscene(mpscene)
Но просмотр карты идет отдельно, как всплывающее окно. Как я могу добавить эту карту в QGraphicscene(mpscene)
?
Ниже приведены несколько методов, которые я попробовал, как предлагается в других сообщениях.
method1
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);
method2
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);
1 ответ
Решение
В контейнере файла PlaneTrack.qml был контейнер, который я изменил на 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