Qt findChild返回null,can';无法找到交叉QML对象 我有一个关于C++上访问QML组件的问题,抱歉它可能是初学者。

Qt findChild返回null,can';无法找到交叉QML对象 我有一个关于C++上访问QML组件的问题,抱歉它可能是初学者。,qt,qml,cascade,blackberry-cascades,Qt,Qml,Cascade,Blackberry Cascades,我目前正在使用,仅此应用程序就非常有效,但在我尝试将此示例与导航面板组合在一起后,它停止工作 我添加了自己的main.qml,另一个名为menu.qml的页面,并将应用程序的原始main.qml重命名为map.qml。所以现在用户需要像这样导航面板:main.qml->menu.qml->map.qml 我的问题是: 最初,根据示例,应用程序构造函数在创建main.qml时会保存一个mapView指针,以便以后可以向mapView添加标记/更改位置 它通过调用以下命令获取mapView指针: Q

我目前正在使用,仅此应用程序就非常有效,但在我尝试将此示例与导航面板组合在一起后,它停止工作

我添加了自己的main.qml,另一个名为menu.qml的页面,并将应用程序的原始main.qml重命名为map.qml。所以现在用户需要像这样导航面板:main.qml->menu.qml->map.qml

我的问题是: 最初,根据示例,应用程序构造函数在创建main.qml时会保存一个mapView指针,以便以后可以向mapView添加标记/更改位置

它通过调用以下命令获取mapView指针:

QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
qml->setContextProperty("_mapViewTest", this);
AbstractPane *root = qml->createRootObject<AbstractPane>();
QObject* mapViewAsQObject = root->findChild<QObject*>(QString("mapViewObj"));
mapView = qobject_cast<bb::cascades::maps::MapView*>(mapViewAsQObject);
QmlDocument*qml=QmlDocument::create(“asset:///main.qml)母公司(本公司);
qml->setContextProperty(“\u mapViewTest”,此选项);
抽象窗格*root=qml->createRootObject();
QObject*mapViewAsQObject=root->findChild(QString(“mapViewObj”);
mapView=QoObject\u cast(MapViewAsQoObject);
但是,我已将名称更改为map.qml,findChild返回为null。因为我的应用程序无法找到mapView,所以当我尝试设置标记/定位自己时,整个应用程序都会崩溃

我试图创建QmlDocument::create(“asset:///map.qml,并使用与上面相同的方法来查找mapview,我能够获得它,但当我尝试放置标记/定位时,什么也没有发生

我还尝试添加一个调用findChild并获取mapView指针的新函数。在map.qml页面内的onCreationCompleted中调用该函数,但mapViewAsQObject仍返回null,并且应用程序已崩溃


任何提示都将不胜感激!感谢

< p>我找到了解决问题的方法,当点击下一个按钮时,我必须用C++来推送页面,这样它就可以找到正确的MavVIEW指针。p>
 QmlDocument *qml = QmlDocument::create("asset:///map.qml").parent(this);
 qml->setContextProperty("_mapViewTest", this);
 Page *root = qml->createRootObject<Page>();
 QObject* mapViewAsQObject = root->findChild<QObject*>(QString("mapViewObj"));
 ... etc
 nav->push(root);
QmlDocument*qml=QmlDocument::create(“asset:///map.qml)母公司(本公司);
qml->setContextProperty(“\u mapViewTest”,此选项);
Page*root=qml->createRootObject();
QObject*mapViewAsQObject=root->findChild(QString(“mapViewObj”);
... 等
导航->推送(根);

我找到了解决问题的方法,当单击下一个按钮时,我必须用C++来推送页面,这样才能找到正确的MavVIEW指针。p>
 QmlDocument *qml = QmlDocument::create("asset:///map.qml").parent(this);
 qml->setContextProperty("_mapViewTest", this);
 Page *root = qml->createRootObject<Page>();
 QObject* mapViewAsQObject = root->findChild<QObject*>(QString("mapViewObj"));
 ... etc
 nav->push(root);
QmlDocument*qml=QmlDocument::create(“asset:///map.qml)母公司(本公司);
qml->setContextProperty(“\u mapViewTest”,此选项);
Page*root=qml->createRootObject();
QObject*mapViewAsQObject=root->findChild(QString(“mapViewObj”);
... 等
导航->推送(根);

没用多长时间没用多长时间