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. Cannot connect MyClass::data(QVariant) to (null)::updateData(QVariant)
Forum Updated to NodeBB v4.3 + New Features

Cannot connect MyClass::data(QVariant) to (null)::updateData(QVariant)

Scheduled Pinned Locked Moved QML and Qt Quick
17 Posts 2 Posters 5.4k 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.
  • H Offline
    H Offline
    houmingc
    wrote on last edited by
    #4

    using Qt Creator 3.1.2 (opensource)
    will be upgrading the Qt end of the week.

    Not able to create an QML instance meant i can't continue anything, isn't it??

    1 Reply Last reply
    0
    • p3c0P Offline
      p3c0P Offline
      p3c0
      Moderators
      wrote on last edited by
      #5

      2nd Attempt will not work since Window requires QQmlApplicationEngine and not QQuickView to load it.

      Have a look at "this":http://qt-project.org/doc/qt-5/qtqml-cppintegration-interactqmlfromcpp.html#invoking-qml-methods for an example.

      Now instead of using QQmlEngine directly you can use more convenient QQmlApplicationEngine:
      @
      QQmlApplicationEngine engine;
      engine.load(QUrl(QStringLiteral("qrc:///main.qml")));

      QObject *rootObject= engine.rootObjects().first();
      qDebug() << rootObject->objectName();

      QVariant returnedValue;
      QVariant msg = "Hello from C++";

      QMetaObject::invokeMethod(rootObject, "updateData",
      Q_RETURN_ARG(QVariant, returnedValue),
      Q_ARG(QVariant, msg));

      qDebug() << "QML function returned:" << returnedValue.toString();
      @

      157

      1 Reply Last reply
      0
      • H Offline
        H Offline
        houmingc
        wrote on last edited by
        #6

        i am running Qt on Ubuntu not windows

        1 Reply Last reply
        0
        • p3c0P Offline
          p3c0P Offline
          p3c0
          Moderators
          wrote on last edited by
          #7

          It's Window not Windows. Window here refers to the root element which you have used in the QML file.
          I think you must start with the basics of QML first.

          157

          1 Reply Last reply
          0
          • H Offline
            H Offline
            houmingc
            wrote on last edited by
            #8

            Thanks, QMetaObject::InvokeMethod works better than signals/slot for C++ invoking QML. From same document, QML invoking C++, i could not compile, below is my code. Can help?
            @
            -----------------header file myclass----------------
            #include <QDebug>

            class MyClass: public QObject
            {
            Q_OBJECT
            public slots:
            void cppSlot(const QString &msg){
            qDebug()<<"Called the c++ slot with message"<<msg;
            }
            };

            -----------------cpp file----------------
            #include <QApplication>
            #include <QQmlApplicationEngine>
            #include <QQuickView>
            #include <QDebug>
            #include "myclass.h"

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

            QQuickView view("qrc:///main.qml");
            QObject *item= view.rootObject();
            
            MyClass myClass;
            QObject::connect(item,SIGNAL(qmlSignal(QString)),&myClass,SLOT(cppSlot(QString)));
            
            return app.exec&#40;&#41;;
            

            }

            -----------------qml file----------------
            import QtQuick 2.2
            import QtQuick.Controls 1.1

            ApplicationWindow {
            id: item
            visible: true
            width: 640
            height: 480
            title: qsTr("Hello World")

            signal qmlSignal(string msg)
            

            MouseArea{
            anchors.fill:parent
            onClicked: item.qmlSignal("Hello from QML")
            }
            }
            @

            1 Reply Last reply
            0
            • p3c0P Offline
              p3c0P Offline
              p3c0
              Moderators
              wrote on last edited by
              #9

              What error do you get during compiling?

              157

              1 Reply Last reply
              0
              • p3c0P Offline
                p3c0P Offline
                p3c0
                Moderators
                wrote on last edited by
                #10

                To use ApplicationWindow/Window you will need to use QQmlApplicationEngine and not QQuickView. The error should be at runtime not compiletime.

                157

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  houmingc
                  wrote on last edited by
                  #11

                  error at QQuickView and QObject statement.

                  @

                  no matching function for call to 'QQuickView::QQuickView(const char[16])'
                  cannot convert 'QQuickItem' to 'QObject *' in initialization.
                  @

                  1 Reply Last reply
                  0
                  • p3c0P Offline
                    p3c0P Offline
                    p3c0
                    Moderators
                    wrote on last edited by
                    #12

                    Use QQmlApplicationEngine for loading ApplicationWindow/Window.
                    @
                    QQmlApplicationEngine engine;
                    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
                    QObject *rootObject= engine.rootObjects().first();
                    QObject::connect(rootObject,SIGNAL(qmlSignal(QString)),
                    &myClass,SLOT(cppSlot(QString)));
                    @

                    Above should work.

                    157

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      houmingc
                      wrote on last edited by
                      #13

                      insert statement 'MyClass myclass;' before QObject::connect.
                      2 error encounter:
                      undefined reference to 'vtable for MyClass'
                      ld returned 1 exit status

                      1 Reply Last reply
                      0
                      • p3c0P Offline
                        p3c0P Offline
                        p3c0
                        Moderators
                        wrote on last edited by
                        #14

                        Run qmake and then Rebuild.

                        157

                        1 Reply Last reply
                        0
                        • H Offline
                          H Offline
                          houmingc
                          wrote on last edited by
                          #15

                          I created a new header file for class 'MyClass'
                          Now my error is
                          QQmlApplicationEngine failed to load component
                          Assert:"!isEmpty()" in file /include/QtCore/qlist.h
                          The program has unexpectedly finished.

                          1 Reply Last reply
                          0
                          • p3c0P Offline
                            p3c0P Offline
                            p3c0
                            Moderators
                            wrote on last edited by
                            #16

                            I don't know. You must have misplaced something somewhere. Better would be to create a new project with that class and qml file. Use the code that i posted above to launch the qml file. It is not a very complicated code.

                            157

                            1 Reply Last reply
                            0
                            • H Offline
                              H Offline
                              houmingc
                              wrote on last edited by
                              #17

                              Thanks very much.

                              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