Pagestack, push() from within C++



  • Hi,
    I need to push/pop pages on a pagestack within C++.
    I do use the invoke method @QMetaObject::invokeMethod(pageStack, "push", someparameter)@

    In javascript it should be:
    @pageStack.push(myPage)@

    (myPage is an id)
    but in the above c++ invokeMethod I cannot use an id parameter.
    Neither is QVariant-objectName or QString-objectName accepted by push:
    @QMetaObject::invokeMethod: No such method PageStack_QMLTYPE_4::push(QVariant)@

    r.



  • Did you try wrapping the argument in Q_ARG(type, value)?



  • Sorry,
    To be precise:
    @QMetaObject::invokeMethod(pageStack, "push", Q_ARG(QString, "instrumentPage"));@

    QMetaObject::invokeMethod: No such method PageStack_QMLTYPE_4::push(QString)
    and
    @QMetaObject::invokeMethod(pageStack, "push", Q_ARG(QObject*, instrumentPage));@

    QMetaObject::invokeMethod: No such method PageStack_QMLTYPE_4::push(QObject*)
    and several more combi's (like QVariant)
    r.



  • I guess your only option then is: read the source. Sorry, I don't know how this works exactly either :-)



  • Oh well, my reply completely disappeared after posting...
    Anyhow, I managed to avoid the error messages (push needed 3 args). Stil, it doesn't work.
    One of the so many problems with QML<>C++.
    Thanks for your help.
    I'll put up a more fundamental question: is QML matured enough to port large C++/QT applications to0 C++/QML?



  • The distinction you make isn't correct. QML is still Qt. But if you mean porting a now completely widget-based application to use a QML interface, I guess the answer is: it depends. It depends on your platform, on your needs, on the types of interaction you need to support...



  • Thanks,
    I have put up the general question here: http://qt-project.org/forums/viewthread/16009/
    r.



  • You need to call 'push' in such a way:

    QMetaObject::invokeMethod(pageStack, "push", Q_RETURN_ARG(QVariant, retValue),
    Q_ARG(QVariant, QVariant::fromValue(mainPage)), Q_ARG(QVariant, QVariant()), Q_ARG(QVariant, QVariant()));

    i.e. you need to take in account agruments count, which you can see in reference documentation.



  • Thanks.
    I'll have another try. Looks like the documentation has been updated as well.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.