在现有C++;QT项目 我们有一个C++编写的QT项目,我们想在我们现有的UI中添加一些类似MavVIEW示例项目。我们不知道如何实例化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; }

在现有C++;QT项目 我们有一个C++编写的QT项目,我们想在我们现有的UI中添加一些类似MavVIEW示例项目。我们不知道如何实例化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; },c++,qt,qml,qqmlcomponent,qquickwidget,C++,Qt,Qml,Qqmlcomponent,Qquickwidget,我们使用mapViewer组件创建一个对象,然后忘记它,这对我们来说毫无意义,但是我们在网上找到的示例有一个类似的流程 试试这样的方法: QQuickWidget *buildMap(QWidget *parent) { QQuickWidget *map = new QQuickWidget(parent); map->setSource(QUrl("qrc://mapviewer.qml")); map->show(); return map; }

我们使用mapViewer组件创建一个对象,然后忘记它,这对我们来说毫无意义,但是我们在网上找到的示例有一个类似的流程

试试这样的方法:

QQuickWidget *buildMap(QWidget *parent) {
    QQuickWidget *map = new QQuickWidget(parent);
    map->setSource(QUrl("qrc://mapviewer.qml"));
    map->show();
    return map;
}
至于
initializeMap
方法,可以在
mapviewer.qml
onCompleted
中调用它?如果你坚持从C++调用它,你仍然可以得到对象Truug <代码> MAP> ROOBtojCd()/<代码> < /P>

此外,在创建组件和对象时,如果是C++或QML,检查状态和输出错误字符串总是一个好主意,如果你不假设它将全部工作,然后想知道为什么它不存在。