参考错误时,使用c++和qml的诺基亚N9

ReferenceError when using c++ and qml on Nokia N9

本文关键字:qml 诺基亚 N9 c++ 错误 使用 参考      更新时间:2023-10-16

我想集成c++和qml。然而,我的代码在模拟器中工作得很好,但在Nokia N9 (Qt 4.7.4 harmattan_10.2011.34-1)中不行

这是我的代码我在这里粘贴了c++和qml代码供您参考
#include <QtGui/QApplication>
#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeContext>
#include <QtDeclarative/QDeclarativeEngine>
#include "qmlapplicationviewer.h"
#include "data.h"
#include "testfactory.h"
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QApplication> app(createApplication(argc, argv));
TestFactory *testfactory = new TestFactory();
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
QDeclarativeContext *context = viewer->rootContext();
context->setContextProperty("testfactory", testfactory);
viewer->setOrientation(QmlApplicationViewer::ScreenOrientationLockPortrait);
viewer->setMainQmlFile(QLatin1String("qml/main.qml"));
viewer->showExpanded();
testfactory->intilize();
return app->exec();
}

Button {
    id: startButton
    text: qsTr("Start")
    onClicked: {
        mainview.state = "START"
        testfactory.startMeasurement()    
    }
}

使用的部分是代码在模拟器上工作,而不是在设备上。我得到的错误是ReferenceError:不能找到变量:testfactory

有谁知道原因是什么吗?

根据irc qt-qml的注释,一个解决方案是直接使用

QmlApplicationViewer *viewer = new QmlApplicationViewer();
不是

QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());