[SOLVED]Signal to and from my qml file



  • I have decided to make a simple ui with qml, that I want to use from my c++ code.

    What I have now are the basics

    QApplication app(argc, argv);
    
    DataControl *dataControl = new DataControl();
    
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    

    I then try to find a qml object using

    QObject *container = engine.rootObjects().first()->findChild<QObject*>("dropArea");
    

    and finally I am trying to connect a signal with a slot in my class

    QObject::connect(container, SIGNAL(imageLoaded(QString)), dataControl,   SLOT(dataUpdate(QString)));
    

    It might be a bit too late and I am doing something really wrong, but the app crashes immediately.

    How should I connect and emit signals from qml to c++ in this case?


  • Lifetime Qt Champion

    Hi,

    Are you sure that container is not null ?


  • Moderators

    @ealione said:

    It might be a bit too late and I am doing something really wrong, but the app crashes immediately.

    How should I connect and emit signals from qml to c++ in this case?

    Run your program using a debugger. What does it tell you when your program crashes? (Note: It might not be related to your signal-slot connection at all)



  • Hello
    I have found the solution under the following link:
    It works with QT 5.3.1 and QML ( QT Quick 2 )
    http://wisol.ch/w/articles/2014-12-15-qt-signal-slots-qml-cpp/
    The source code of the example can be found under https://github.com/wisoltech/qt-signal-slot



  • @JKSH it is definitely related to the slot signal connection command. But as SGaist said, more than probably my container is empty. It is just that after midnight I stop thinking straight :)

    Hi WMKO3 and thanks for the link. Connecting qml and c++ is of curse something simple, I just get stuck sometimes. I will definitely solve this today and post back what the issue was.



  • @SGaist you are right, I was not receiving anything from qml so my container was empty.


Log in to reply