2011-07-26 18 views
2

私はqml - javascriptのメソッドをC++から呼び出す必要があります。 基本的に私はドキュメントに書いてあることすべてをやったと思います。 それはこのようであれば、私はメソッドを呼び出すことができます。qmlのメソッドの呼び出し - C++のjavascriptスコープの問題

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

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

しかし、私はこのようにそれを入れて、別々の.jsでこのようにそれを提出場合、私は同じ機能を呼び出すことはできません。

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

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

} 

スクリプトはインポートされていますが、引き続き引数が認識されないという問題があります。どんな助けもありがとう。ありがとう

答えて

2

あなたのRectangleのどこかでarg1とarg2が定義されていますか?エルス

それはあなたが

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内のどこにでも定義できます。最初のケースではすべてが正常に動作しているためです。しかし、後者の場合はそうではありません。 どうすればいいですか、私はそれらをどこかに宣言すべきですか?あなたが私にあなたが関数に2つの文字列を送信しているという例では、私がしたいのは、異なるタイプの変数を使ってC++からメソッドを呼び出すことです。 そして、私がそうするときには "QMetaObject :: invokeMethod:そのようなメソッドはありませんQDeclarativeRectangle :: foo2(QVariant、QVariant)"エラー 引用符については、コード例に入れておきました前 – nikolakoco