2011-07-26 2 views
2

나는 C++에서 qml - javascript의 메소드를 호출하려고합니다. 기본적으로 나는 문서에서 말한 모든 것을 다했다고 생각합니다.qml의 메소드 호출 - C++의 javascript. 범위 문제

Rectangle { 
...... 
    Component.onCompleted:{ 
    ........... 
    } 

    function foo(arg1, arg2) 
    { 
     ................ 
    } 
} 

하지만이 같은 별도의 .js에 넣어 만약 내가 같은 기능을 호출 할 수 없습니다이처럼 파일 :이 같은 경우 나는 메소드를 호출 할 수

import ../Script.js as Script 
Rectangle { 
    ......... 

    Component.onCompleted:{ 
     Script.foo(arg1,arg2) 
    } 

} 

스크립트를 가져 왔지만 모든 것이 있지만 여전히 인수가 인식되지 않는다는 문제가 있습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다

답변

2

arg1과 arg2는 Rectangle의 어딘가에 정의되어 있습니까? 그렇지

당신이

function foo(arg1, arg2) { 
    print(arg1, arg2) 
} 

main.qml 인용 부호 내가

를 사용하여 테스트를 위해

import "../Script.js" as Script 

와 Script.js을 Script.js을 가져올 수있는 것을 제외하고 작동합니다

import QtQuick 1.0 

import "Script.js" as Script 

Rectangle { 
    width: 360 
    height: 360 

    Component.onCompleted: { 
     Script.foo("a", "b"); 
    } 
} 
+0

Rectangle의 어디에서나 정의됩니다. 첫 번째 경우에는 모든 것이 정상적으로 작동하기 때문입니다. 하지만 두 번째 경우에는 그렇지 않습니다. 그래서 어딘가에 선언해야합니까? 예를 들어, 함수에 두 개의 문자열을 보내고 있다는 것을 보여주는 예에서, 내가 원하는 것은 다른 유형의 변수로 C++에서 메소드를 호출하는 것입니다. 그리고 내가 할 때 "QMetaObject :: invokeMethod : 그러한 메서드 QDeclarativeRectangle :: foo2 (QVariant, QVariant)"오류가 발생했습니다. 인용 부호에 대해, 나는 그 코드 예제에 넣는 것을 잊어 버렸습니다. 전에 – nikolakoco