Actually, I think you're creating a new instance of the FirstPage.qml component using this code. But, Sailfish should have already created its own instance of that page when it started up.

You might instead try retrieving a view of the Sailfish instance and going from there, something like this:

QQuickView *view = SailfishApp::createView();
QObject *object = view->rootObject();
QObject *label = object->findChild<QObject *>("label");

--John

On 8/13/15 10:51 AM, Antonio Mancini wrote:
Thanks, actually i had already seen that but couldn't accomplish much, now i tried again and i managed to access and edit qml properties, but the QML object doesn't update.

i use this code in a c++ method

    QQmlEngine engine;
        QQmlComponent component (&engine,
    "/usr/share/harbour-pocketmonsters/qml/pages/FirstPage.qml");
        QObject *object = component.create();
        QObject *label = object->findChild<QObject*>("label");

        cout << label->property("text").toString();

        if (label)
            label->setProperty("text", active.name <http://active.name>);

        cout << label->property("text").toString();


the output of cout is correct, but the label doesn't update

The console shows these errors, but i think they are irrelevant since the output is correct

    [W] unknown:108 -
    file:///usr/lib/qt5/qml/Sailfish/Silica/Page.qml:108:
    ReferenceError: __silica_applicationwindow_instance is not defined

    [W] unknown:94 -
    file:///usr/lib/qt5/qml/Sailfish/Silica/Page.qml:94:
    ReferenceError: __silica_applicationwindow_instance is not defined

    [W] unknown:178 -
    file:///usr/lib/qt5/qml/Sailfish/Silica/Page.qml:178:
    ReferenceError: __silica_applicationwindow_instance is not defined

    [W] unknown:331 -
    file:///usr/lib/qt5/qml/Sailfish/Silica/private/PulleyMenuBase.qml:331:
    ReferenceError: __silica_applicationwindow_instance is not defined


2015-08-13 15:17 GMT+02:00 Andrea Bernabei <and.berna...@gmail.com <mailto:and.berna...@gmail.com>>:

    Hi,

    try having a look at this
    http://doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html

    2015-08-13 14:14 GMT+01:00 Antonio Mancini <ziobill...@gmail.com
    <mailto:ziobill...@gmail.com>>:

        Hi all, i need to access a property of a C++ Class, declared
        inside another class, from QML.

        This is the principal class:

            #ifndef MANAGER_H
            #define MANAGER_H

            #include <QObject>
            #include <QTextStream>
            #include <QFile>
            #include "monster.h"
            #include "move.h"
            #include "turnmanager.h"


            class Manager : public QObject
            {
                Q_OBJECT

            public:
                explicit Manager(QObject *parent = 0);

                int activeId;
                QString activeString;

                int enemyId;

                Monster active;
                Monster enemy;

                Move activeMove;
                Move enemyMove;

                Q_INVOKABLE void saveActive();
                Q_INVOKABLE void fetchMonster( const int &level );
                Q_INVOKABLE void assignMoves(Monster &monster );
                Q_INVOKABLE void setMove( Move &move, const int &id );

            signals:

                void fetchMonsterDone();

            public slots:

            };

            #endif // MANAGER_H


        this is the Monster Class:

            #ifndef MONSTER_H
            #define MONSTER_H

            #include <QObject>
            #include <QString>
            #include <math.h>
            #include "move.h"


            class Monster : public QObject
            {
                Q_OBJECT

            public:

                explicit Monster(QObject *parent = 0);

                ...

                QString name;

                ...
            };

            #endif // MONSTER_H


        in my qml page i include the class properly and i have
        something like this:

            Page {

                id: page

                Manager {

                    id: manager

                    onFetchMonsterDone: {

                         console.log("Fetch done")
                    }

                }

                Label {

                    id: label

                }

            }


        after doing some operations with fetchMonster(), the "active"
        class has been assigned some values to its properties, i need
        to access these values from QML in the "onFetchMonsterDone",
        let's say i need to assign to label.text the value of
        manager.active.name <http://manager.active.name>

        OR

        i read there are some ways to access end edit QML properties
        from C++

        Can someone help me?

        _______________________________________________
        SailfishOS.org Devel mailing list
        To unsubscribe, please send a mail to
        devel-unsubscr...@lists.sailfishos.org
        <mailto:devel-unsubscr...@lists.sailfishos.org>



    _______________________________________________
    SailfishOS.org Devel mailing list
    To unsubscribe, please send a mail to
    devel-unsubscr...@lists.sailfishos.org
    <mailto:devel-unsubscr...@lists.sailfishos.org>




_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org

_______________________________________________
SailfishOS.org Devel mailing list
To unsubscribe, please send a mail to devel-unsubscr...@lists.sailfishos.org

Reply via email to