我想整合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
任何人都知道原因是什么?
答案 0 :(得分:1)
基于irc qt-qml的评论,一种解决方案就是使用
QmlApplicationViewer *viewer = new QmlApplicationViewer();
而不是
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
然后代码可以工作。