Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Pass Qml object in signal



  • Hi.
    I created a c++ QObject based class and I use that in qml just fine.
    I want to use object of that type in signal parameter.
    I've done the following:

    // Sender.qml
    signal sigName(var obj) // signal definition
    ...
    CppBasedClass { id: cls } // create object of that type
    ...
    function func() {
       cls.property1 = ... // fill object
    ...
       sigName(cls) // emit signal
    }
    
    // Receiver.qml
    CppBasedClass { id: recv }
    
    Connections {
    ...
       onSigName: {
          recv = obj
          console.log(obj.property1) // works, prints property1 value
          console.log(recv.property1) // <-- does not work, prints nothing
       }
    }
    

    CppBasedClass have many properties and I need autocomplete feature. obj does not have any autocomplete, but recv does.
    How can I achive this?



  • Temporarily solved the prblem with this function:

    // equivalent to: obj1 = obj2
        function assign(obj1, obj2) {
            for(var prop in obj2)
                if(obj2.hasOwnProperty(prop) && typeof obj2[prop] !== 'function')
                    obj1[prop] = obj2[prop]
        }
    

    because obj1 is of type obj2, there is no problem with this approach.

    BUT main question remains unanswered. Why assignment does not work?


Log in to reply