Important: Please read the Qt Code of Conduct -

[Solved] Passing a custom QDeclarativeItem as a method Parameter?

  • I have a class MyItem that derrives from QDeclarativeItem.
    I have a 2nd class MyContainer that derrives from QDeclarativeItem.

    MyItem {
    id: item1
    text: "Hello!"

    MyContainer {
        id: container
    Component.onCompleted: {
          console.log( container.returnItem(item1).text );



    Q_INVOKABLE MyItem* returnItem(MyItem* item) { return item; }


    TypeError: Result of expression 'container.returnItem(item1)' [undefined] is not an object.

    Is it possible to pass a custom item into a method, or must I use a property?

  • --- Solved ---

    Q_INVOKABLE QObject* returnItem(QObject* item) { return item; }

    And qobject_cast<MyItem*>(item) to make use in C++.

  • Hi,

    This was a bug, but should be solved for Qt 4.7.1 and later (see "QTBUG-13047": Are you using 4.7.0, or still seeing problems in a later release?


  • I noticed something very similar (I would guess the same underlying cause) yesterday with Qt 4.7.2.

    In my case, I had a signal in my C++ code with signature void mySignal(CustomTypeDerivedFromQObject*). If I attached a Javascript function in QML to that signal, the function's parameter would print as QVariant<CustomTypeDerivedFromQObject*> but I could not access any properties of the object. By changing the signal's signature to void mySignal(QObject*), the QML code was able to see the object's properties as expected.

Log in to reply