2014-11-24 3 views
0

qt4.8.4의 qml 기능에 C++ 신호를 연결합니다. 그것은 잘 작동하고 있지만, 다음과 같이 응용 프로그램 출력에 경고하게 :qml 슬롯에 C++ 신호를 연결할 때의 경고

개체 : : 연결 : 없음 같은 슬롯 QDeclarativeItem_QML_9이 :: onValue_changed 없습니다 (더블) 개체 : : 연결 : (보낸 사람 이름 : 'MyWidget')

을 이 같은

내가 정의한 QML 슬롯 :

import QtQuick 1.0 

Item { 
    id: root 
    property real value : 0 

    Connections 
     { 
      target: controllerObject 
      onValue_changed : 
      { 
       root.value = value 
      } 
     } 
} 

그리고 이것은 내 C++로 신호가 QML 슬롯에 연결 방법 :

ui->view->rootContext()->setContextProperty("controllerObject",this); 
ui->view->setSource(QUrl("qrc:/myQml.qml")); 
ui->view->setStyleSheet("background-color: rgba(255, 255, 255, 0);"); 
ui->view->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); 
ui->view->setResizeMode(QDeclarativeView::SizeRootObjectToView); 

connect(this,SIGNAL(value_changed(double)),(QObject *)ui->view->rootObject(),SLOT(onValue_changed(double))); 

왜 그런 경고를 내고 있습니까?

경고를 어떻게 삭제합니까? 이 같은

답변

3

내가 정의한 QML 슬롯 :

당신이 잘못입니다. 슬롯 정의가 아니며, connection 자체 인 (controllerObjectvalue_changed 신호에 대한 QML 핸들러 추가)입니다. 그래서 코드 작업을 할 수 있습니다. 그러나이 줄 :

연결 (이, SIGNAL)) (value_changed (더블, (QObject를 *) UI->보기 -> rootObject(), SLOT)) (onValue_changed (더블);

당신은 신호 value_changed를 기존 onValue_changed 이 inexisting 연결하려는 (분명히, 그것은 당신의 코드에 존재하지만보기의 rootObject)에 있습니다. 경고를받은 이유입니다.

결론는 :
당신은 신호 두 번를 연결을 시도,하지만 하나 방법은 성공적이었다, 그래서 코드는 잘 작동.

+0

답장을 보내 주셔서 감사합니다. –

관련 문제