[Qt-qml] [SOLVED] Signal of Child-Elements in C++?

Christian Benjamin Ries christian_benjamin.ries at fh-bielefeld.de
Sun Sep 11 10:26:54 CEST 2011


Good suggestions, much better, thanks...

[CPP]
QDeclarativeContext *contextHost = new QDeclarativeContext(m_engine->rootContext());
       contextHost->setContextObject(this);

       QDeclarativeComponent componentHost(m_engine, QUrl::fromLocalFile("qml/Host.qml"));

       QGraphicsObject *objectHost = static_cast<QGraphicsObject*>(componentHost.create(contextHost));
[/CPP]

Am 10/09/11 18:13, schrieb Girish Ramakrishnan:
> No, if you have to do something like below, you are not doing it correctly :-)
>
> Instead expose your C++ object to QML and call the c++ slot from QML.
>
> Girish
>
> On Sat, Sep 10, 2011 at 8:07 AM, Christian Benjamin Ries
> <christian_benjamin.ries at fh-bielefeld.de>  wrote:
>> Solved:
>> [CPP]
>> for(int i=0; i<COUNT; i++) {
>>      QString objName = QString("service%1").arg(i);
>>      QObject *serviceObject = objectHost->findChild<QObject*>(objName);
>>      connect(serviceObject, SIGNAL(serviceIndicatorClicked(int)),
>>                    this, SLOT(serviceIndicatorClicked(int)));
>>    }
>> [/CPP]
>>
>> Am 10/09/11 14:28, schrieb Christian Benjamin Ries:
>>
>> Hello,
>>
>> can you give me an advice how I could connect signals by childs to my
>> C++-implementation?
>>
>> I have following QML-structure:
>> [QML]
>> // Service.qml
>> Item {
>>    id: service;
>>    signal serviceIndicatorClicked(int index);
>>
>>    Rectangle {
>>        id: serviceIndicator;
>>        ...
>>        MouseArea {
>>          anchors.fill: parent;
>>          acceptedButtons: Qt.LeftButton;
>>          onClicked: {
>>            serviceIndicatorClicked(index);
>>          }
>>        }
>>      }
>> }
>>
>> // Host.qml
>> Rectangle {
>>    id: hostItem;
>>
>>    Service {
>>      ...
>>    }
>> }
>> [/QML]
>>
>> I try to connect this signal with following lines:
>> [CPP]
>> connect(objectHost, SIGNAL(serviceIndicatorClicked(int)),
>>                this, SLOT(serviceIndicatorClicked(int)));
>> [/CPP]
>>
>> Then my result is:
>> [OUTPUT]
>>
>> Object::connect: No such signal Host_QMLTYPE_1::serviceIndicatorClicked(int)
>>
>> Object::connect: (receiver name: 'MainWindow')
>>
>> [/OUTPUT]
>>
>> Of course, this makes sense to me, because the signal of the child is not
>> visible and not part of Host, right?
>>
>> Is there an easy way to use this signal?
>>
>> Cheers, Christian
>>
>>
>> _______________________________________________
>> Qt-qml mailing list
>> Qt-qml at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>>
>> --
>> Dipl.-Ing. (FH) Christian Benjamin Ries, M.Sc.
>> University of Applied Sciences Bielefeld
>> Department of Engineering Sciences and Mathematics
>> Computational Materials Science&  Engineering (CMSE)
>>
>> Wilhelm-Bertelsmann-Str. 10, D-33602 Bielefeld
>> Office: 202 (WBSII)
>> Phone:  +49 521 106-71222
>> Fax:    +49 521 106-71241
>> Web:    www.christianbenjaminries.de
>>
>> _______________________________________________
>> Qt-qml mailing list
>> Qt-qml at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>>
>>

-- 
Dipl.-Ing. (FH) Christian Benjamin Ries, M.Sc.
University of Applied Sciences Bielefeld
Department of Engineering Sciences and Mathematics
Computational Materials Science&  Engineering (CMSE)

Wilhelm-Bertelsmann-Str. 10, D-33602 Bielefeld
Office: 202 (WBSII)
Phone:  +49 521 106-71222
Fax:    +49 521 106-71241
Web:    www.christianbenjaminries.de



More information about the Qt-qml mailing list