Señal desde QML a la ranura C ++, no puede encontrar la señal QML

votos
3

Tengo una señal en QML y quiero conectar a una ranura definida en C ++. Sin embargo mi código está fallando y estoy recibiendo el error:

QObject :: connect: No existe el QDeclarativeContext señal :: enviado () en ../qt_cpp/mainwindow.cpp:66

Aquí hay un fragmento de código C ++:

message_reading test;
QDeclarativeView tempview;
tempview.setSource(QUrl(qrc:/qml/media_screen.qml));
QObject *item = tempview.rootContext();
QObject::connect(item, SIGNAL(sent()),
&test, SLOT(readMediaJSONDatabase(QString&)));

Y aquí es un fragmento de código QML:

Image {
    id: bluetooth
    source: images_mediahub/footer_icons/bluetooth_normal.png
    signal sent(string msg)
    MouseArea {
        anchors.fill:  parent
        onClicked: {
            bluetooth.sent(Test.medialibrarydb.toString())
            info_load.source=./bluetooth.qml
        }
    }
}
Publicado el 27/08/2013 a las 23:06
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

La SIGNALllamada a la macro en la connectlínea debe informar al parámetro de forma explícita, con SIGNAL(sent(QString)).

Además, la señal se emite por el objeto creado, pero fragmento de código que ya ha proporcionado está tratando de conectarlo en el objeto de contexto en su lugar. Usted necesitará algo en la línea de:

QObject *tempitem = tempview.rootObject();

Hay un ejemplo completo que cubre que en la documentación.

Respondida el 28/08/2013 a las 05:10
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more