2013-08-27 2 views
3

QML로 신호를 받았는데 C++로 정의 된 슬롯에 연결하고 싶습니다. 그러나 내 코드가 실패하고 내가 오류 메시지가 표시됨 : 여기 QML에서 C++ 슬롯으로의 신호가 QML 신호를 찾을 수 없습니다.

QObject::connect: No such signal QDeclarativeContext::sent() in ../qt_cpp/mainwindow.cpp:66

는 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&))); 

그리고 것은 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" 
     } 
    } 
} 

답변

1

connect 행에있는 SIGNAL 매크로 호출은 SIGNAL(sent(QString))과 함께 매개 변수를 명시 적으로 알려야합니다.

또한 신호가 생성 된 객체에 의해 생성되지만 사용자가 제공 한 코드 스 니펫은 대신 컨텍스트 객체에 연결하려고합니다.

QObject *tempitem = tempview.rootObject(); 

문서에 그 취재 complete example있다 : 당신의 라인을 따라 뭔가를해야합니다.

+0

아니요, 거기에 SIGNAL (보낸 (QString)) 유형을 추가하려고 시도했지만 작동하지 않습니다. 동일한 오류 메시지를보고 BTW, 성공을 컴파일하지만 응용 프로그램 창을 열 때이 오류 메시지를 반환합니다. – zero

+0

아, 죄송합니다. 이제 컨텍스트에 연결하려고합니다. 원하는 컨텍스트가 아닙니다. 답변을 업데이트합니다. 어쨌든 –

+0

감사합니다. 나는 새로운 업데이트를 받았지만 여전히 이것을 배웠다. – zero