web-dev-qa-db-fra.com

Qt5 Qtcreator utilisant une fonction c ++ dans main.qml pour créer un fichier / tmp /

Je veux écrire une application pour Ubuntu Touch basée sur le modèle QtQuick2ApplicationViewer et l'application doit écrire dans un fichier (par exemple, '/tmp/test.log').

J'ai testé avec une fonction/macro Q_INVOKABLE:

Q_INVOKABLE void QtQuick2ApplicationViewer::setData3(void) {

    qDebug() << "setData";

}

... et partagez-le avec Q_INVOKABLE.

Mais je ne peux pas appeler la fonction dans mon fichier .qml et j'ai une erreur:

...main.qml:289: ReferenceError: setData3 "is not defined"

Quelqu'un a-t-il un fichier de travail demo.pro à télécharger?

Ou une méthode de travail pour créer un fichier en utilisant une fonction cpp + qml comme fichier .pro à télécharger?

Travailler dans la version qtcreator pour ubuntutouch?

5
sUbuPack

J'ai trouvé la solution moi-même et je veux expliquer ce que j'ai mal fait.

J'ai oublié dans:

principal c

    #include <QQmlEngine>
    #include <QQmlComponent>
    #include "stringhelper.h"
   to 
    qmlRegisterType<StringHelper>("MyStringHelper", 1, 0, "StringHelper");

stringhelper.h:

    ...class...
    .....public slots:...
           Q_INVOKABLE void stringxx(void){
              qDebug() << "  stringhelper.h:stringxx GOT YOU !! :-) ";
           }

maintenant dans main.qml:

    import MyStringHelper 1.0

    StringHelper {
            id: my_StringH
    }

    my_StringH.stringxx();

maintenant je suis capable d'appeler ma fonction stringxx et des fonctions plus puissantes im .qml

cordialement Sascha

4
sUbuPack