2011-11-20 280 views
2

我想整合。然而,我的代碼在模擬器罰款,但不是在Nokia N9Qt 4.7.4 harmattan_10.2011.34-1在諾基亞N9上使用C++和qml時引用錯誤

這裏是我的代碼 我粘貼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

你有沒有試過對'test'使用不同的變量名稱,並查看錯誤是否使用該名稱? –

+0

我想我們可能需要看看qml中引用的測試的位置。 [我總是迴避「測試」,因爲它相當通用,可能與其他事情發生衝突。] –

+0

另外,上述的包裝範圍是什麼?因爲showExpanded()會立即返回,所以我希望你在做了app.exec()之後呢? –

回答

1

基於IRC從QT-QML的意見,一個解決方法就是使用而不是

QmlApplicationViewer *viewer = new QmlApplicationViewer(); 

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

然後代碼工作。

相關問題