5

私がすることができます:

SomeElement{
    id: something
    function someFunction(){...}
....

OtherElement{
     property int whatever: something.someFunction()

ただし、すべての JS 関数を別のファイルで定義したいと思います。問題は、私が知る限り、これにより関数がいずれかの要素に関連付けられないようになることです。関数を別の要素のプロパティとして参照して呼び出すことはできなくなりました。

関数を QML 要素に添付することは可能ですが、別のファイルで定義したままにすることはできますか? 要素から関数を「転送」または「エイリアス」する構文があり、要素でこの「メンバー関数」を呼び出すことができるため、この関数は親要素の他のプロパティにアクセスできますか?

4

2 に答える 2

0

js ファイルをモジュールとしてインポートし、モジュール名の接頭辞を付けてその関数を使用することができます。したがって、それらは QML オブジェクトの関数とは別の「名前空間」になります

それに関するドキュメント: http://qt-project.org/doc/qt-5.0/qtqml/qtqml-javascript-imports.html

于 2013-11-10T11:17:11.043 に答える
0

関数を QML 要素に添付することは可能ですが、別のファイルで定義したままにすることはできますか? 要素から関数を「転送」または「エイリアス」する構文があり、要素でこの「メンバー関数」を呼び出すことができるため、この関数は親要素の他のプロパティにアクセスできますか?

直接ではありませんが、簡単に偽造できます。

// foo.js
function printDimensions(item) {
    console.log(item.width, "x", item.height)
}

// in qml
import "foo.js" as Foo
// ..
Item {
  id: someItem
  function printDimensions() { Foo.printDimensions(someItem) }
}
// ..
Rectangle {
  id: anotherItem
  function printDimensions() { Foo.printDimensions(anotherItem) }
}

このようにして、単純なラッパーを介して関数をさまざまなオブジェクトにアタッチできます。

于 2017-08-23T19:31:49.077 に答える