我们有一个用 C++ 编写的现有 QT 项目,我们想将类似 mapViewer 示例项目的东西添加到我们现有的 UI 中。我们无法弄清楚如何实例化 mapViewer,并调用初始化/显示它的方法。根据在线帮助,我们想出了下面的函数,它返回一个 QQuickWidget,我们可以将它添加到 UI 元素中。我们不断收到一个错误,即创建的组件永远不会准备好,因此该功能不起作用。
QQuickWidget *buildMap(QWidget *parent)
{
QQmlEngine *engine = new QQmlEngine;
QQmlComponent component(engine, "qrc://mapviewer.qml");
QObject *object = component.create();
QMetaObject::invokeMethod(object, "initializeMap");
QQuickWidget *map = new QQuickWidget(engine, parent);
return map;
}
使用 mapViewer 组件创建一个对象,然后忘记它,这对我们来说没有多大意义,但是我们在网上找到的示例有类似的流程。