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
    #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