Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. QML to CPP
Forum Updated to NodeBB v4.3 + New Features

QML to CPP

Scheduled Pinned Locked Moved QML and Qt Quick
13 Posts 5 Posters 6.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    eirnanG
    wrote on last edited by
    #4

    its irrelevant i think? or i just dont understand that.

    can you cite some sample codes? or situation?

    1 Reply Last reply
    0
    • T Offline
      T Offline
      thisisbhaskar
      wrote on last edited by
      #5

      [quote author="QtK" date="1309431176"]
      [quote author="eirnanG" date="1309430672"]Good Day!

      How to pass a value or string from QML to CPP.
      It is like, when i clicked the MouseArea from QML it will send a number/string to cpp. And cpp will do some calculation.

      Please Help.[/quote]

      Please post it in a single section and "avoid":http://developer.qt.nokia.com/forums/viewthread/7325 multiple posts.
      [/quote]

      this "avoid" path does not exist.

      The link Andre posted has all the required information and has sample code also :).

      Basically you create a QObject derived class with a QML callable function ( By placing Q_INVOKABLE before it), and then create an instance of that class inside your c++ code and make the created object available in qml by exporting it with QDeclarativeContext::setContextProperty, and call qml invokable function from QML side when you want to pass data

      Example :
      C++ Code
      @
      QmlApplicationViewer viewer;
      YourQmlObject qmlobject(&viewer);
      QDeclarativeContext * context = viewer.rootContext();
      context->setContextProperty("qmlobject",&basicCalc);
      @

      qml side
      @
      qmlobject.callFunction("stringyouwanttopass");
      @

      callFunction is declared and defined in your YourQmlObject class and YourQmlObject is a QObject derived class.

      Declaration of callFunction is

      @Q_INVOKABLE void callFunction(QString str);@

      1 Reply Last reply
      0
      • E Offline
        E Offline
        eirnanG
        wrote on last edited by
        #6

        what are the codes inside the class YourQmlObject?

        i think thats what i need but i cant use it well..

        1 Reply Last reply
        0
        • T Offline
          T Offline
          thisisbhaskar
          wrote on last edited by
          #7

          Ok.. I would suggest you to visit page
          http://developer.qt.nokia.com/wiki/Introduction_to_Qt_Quick_for_Cpp_developers

          and then search for "Calling C++ methods from QML", you will get the answer you are looking for :)

          1 Reply Last reply
          0
          • E Offline
            E Offline
            eirnanG
            wrote on last edited by
            #8

            i already tried it.. but lack of codes.. like, how can i display it, what are the codes inside the cpp..

            please help.. thanks. :)

            1 Reply Last reply
            0
            • E Offline
              E Offline
              eirnanG
              wrote on last edited by
              #9

              @Vijay Bhaska Reddy can give me ur email so i can send you the whole codes? to see it personally?

              1 Reply Last reply
              0
              • T Offline
                T Offline
                thisisbhaskar
                wrote on last edited by
                #10

                You can copy/paste the code here... others can also have a look and advise you something :) or

                you can send the code to my mail id by selecting "Send mail" link in my profile page.

                1 Reply Last reply
                0
                • E Offline
                  E Offline
                  eirnanG
                  wrote on last edited by
                  #11

                  @vijay.. im planning to pass a value from QML when the mousearea is clicked and pass it to CPP to store it..

                  mousearea>clicked>pass an integer=5>store it in CPP>compute etc... >display in QML.. like that..

                  thanks

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    changsheng230
                    wrote on last edited by
                    #12

                    @
                    // MyItem.qml
                    import QtQuick 1.0

                    Item {
                    width: 100; height: 100

                     MouseArea {
                         anchors.fill: parent
                         onClicked: {
                             myObject.cppMethod("Hello from QML")
                             myObject.cppSlot(12345)
                         }
                     }
                    

                    @

                    @
                    // CPP code
                    class MyClass : public QObject
                    {
                    Q_OBJECT
                    public:
                    Q_INVOKABLE void cppMethod(const QString &msg;) {
                    qDebug() << "Called the C++ method with" << msg;
                    }

                    public slots:
                    void cppSlot(int number) {
                    qDebug() << "Called the C++ slot with" << number;
                    }
                    };

                    int main(int argc, char *argv[]) {
                    QApplication app(argc, argv);

                     QDeclarativeView view;
                     MyClass myClass;
                     view.rootContext()->setContextProperty("myObject", &myClass;);
                    
                     view.setSource(QUrl::fromLocalFile&#40;"MyItem.qml"&#41;&#41;;
                     view.show();
                    
                     return app.exec&#40;&#41;
                    

                    }
                    @

                    Chang Sheng
                    常升

                    1 Reply Last reply
                    0
                    • E Offline
                      E Offline
                      eirnanG
                      wrote on last edited by
                      #13

                      @all thanks to your response..
                      @changsheng230 thanks! ill try it :)

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved