I have a problem with QML, with calling Q_INVOKABLE functions. Although I marked the functions as Q_INVOKABLE, I get errors
TypeError: Result of expression 'azdownloader.setData' is not a function TypeError: Result of expression 'azdownloader.perform' is not a function
I have this class:
typedef QString lyricsDownloaderString; class lyricsDownloader : public QObject { public: Q_INVOKABLE virtual short perform() = 0; Q_INVOKABLE inline void setData(const string & a, const string & t);
In main.cpp
Q_DECL_EXPORT int main(int argc, char *argv[]) { QApplication app(argc, argv); mainWindow viewer; qmlRegisterUncreatableType<lyricsDownloader>("MaeLyrica", 1, 0, "lyricsDownloader", ""); qmlRegisterType<AZLyricsDownloader>("MaeLyrica", 1, 0, "AZLyricsDownloader"); viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); viewer.setMainQmlFile(QLatin1String("qml/maelyrica/main.qml")); viewer.showFullScreen(); return app.exec(); }
in main.qml
import QtQuick 1.1 import com.nokia.meego 1.0 import com.nokia.extras 1.0 import MaeLyrica 1.0 //property color fontcolor: "white" PageStackWindow { id: pagestackwindow visible: true MainPage { id: mainview } initialPage: mainview AZLyricsDownloader { id: azdownloader } }
And on the pages
import QtQuick 1.1 import com.nokia.meego 1.0 Page { Button { id: go text: "Go!" width: parent.width onClicked: { goLoader.source = "ShowLyricsPage.qml" pageStack.push(goLoader.item) azdownloader.perform() showLyricsPage.busyind.visible = false } } } }
Other:
import QtQuick 1.1 import com.nokia.meego 1.0 Sheet { id: sheet acceptButtonText: "Save" rejectButtonText: "Cancel" onAccepted: { if ( artistfield.text == "" || trackfield.text == "" ) // check whether empty { emptyfieldsdialog.open() } else { selecttrack.text = artistfield.text + " - " + trackfield.text azdownloader.setData(artistfield.text, trackfield.text) } } content: Rectangle { /*some content here*/ } /*dialog definition*/
What am I doing wrong?
source share