Qt 如何将QML映射添加到QGraphics场景?
该应用程序具有Qt 如何将QML映射添加到QGraphics场景?,qt,qml,qgraphicsscene,qquickview,qquickwidget,Qt,Qml,Qgraphicsscene,Qquickview,Qquickwidget,该应用程序具有QGraphicsView(mpscene)和QGraphicsView(mpGraphicsView)我正在尝试将qml地图对象添加到QGraphicsView(mpscene)中,但地图视图像弹出窗口一样单独出现。如何将此地图添加到qgraphicsecene(mpscene) 以下是我在其他帖子中建议的几种方法 方法1 方法2 在PlaneTrack.qml文件窗口中有一个容器,我将其更改为项目。 下面的代码将qml添加到图形场景中 PlaneTrack *blr2b
QGraphicsView(mpscene)
和QGraphicsView(mpGraphicsView)
我正在尝试将qml地图对象添加到QGraphicsView(mpscene)
中,但地图视图像弹出窗口一样单独出现。如何将此地图添加到qgraphicsecene(mpscene)
以下是我在其他帖子中建议的几种方法
方法1
方法2
在PlaneTrack.qml文件窗口中有一个容器,我将其更改为项目。 下面的代码将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
请出示你的护照。qml@eyllanesc与planespotter Qt示例相同我使用planespotter Qt示例qml代码将其添加到场景。@eyllanesc是否将qml文件加载到图形场景取决于qml文件?我已完成测试,首先,如果您得到两个窗口,可能是因为qml的根是一个窗口或应用程序窗口,如果是,请将其更改为Item,另一方面,我已经看到,不可能嵌入GraphicScene,因为GraphicScene无法渲染,例如,在一次测试中,我让QML显示了自己,并且在将时间T添加到场景后,它没有正确渲染。
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);
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