2014-09-19 28 views
1

我相信新的QT快速通信,我試圖寫一個代碼來調用上QML信號錯誤鑄造rootobject()在QT main.cpp中用於與QML

//main.cpp 
#include "qtquick1applicationviewer.h" 
#include "QApplication" 
#include"authenticate.h" 

    int main(int argc, char *argv[]) 
    { 
     QApplication app(argc, argv); 
     QDeclarativeView view(QUrl::fromLocalFile("MyItem.qml")); 
     QObject *item = view.rootObject(); 

     Authenticate myClass; 
     QObject::connect(item, SIGNAL(qmlSignal(QString)), 
        &myClass, SLOT(cppSlot(QString))); 

    view.show(); 

    return app.exec(); 
} 

誤差C++時隙是: 主的.cpp:15:錯誤:不能在初始化 QObject的轉換 'QGraphicsObject *' 到 '的QObject *' *項= viewer.rootObject();

 //main.qml 
    import QtQuick 1.0 

    Item { 
    id: item 
    width: 100; height: 100 

    signal qmlSignal(String msg) 

    MouseArea { 
     anchors.fill: parent 
     onClicked: item.qmlSignal("Hello from QML") 
    } 
} 


            ^

回答

0

你應該明確地轉換爲QObject *

QObject *item = qobject_cast< QObject * >(view.rootObject()); 

另外,還要確保你已經包括QGraphicsObject

#include <QGraphicsObject>