4

存在を確認し、QML/javascript で (C++ を使用せずに) 動的に作成されたオブジェクトにアクセスする方法はありますか?

マップに似たインターフェイスを持つアプリケーションを作成しようとしています。キーとオブジェクトが与えられた場合、アプリケーションはキーを持つオブジェクトが存在するかどうかを特定し、新しいオブジェクトで上書きする必要があります。そうでない場合、アプリは新しいオブジェクトを作成し、キーに関連付ける必要があります。

ドキュメンテーションによると、動的に管理されるオブジェクトには ID がなく、それらにアクセスする唯一の方法は objectName を使用することでした。これには C++ アプリケーションが必要なようです。

前もって感謝します。

4

1 に答える 1

4

JavaScriptオブジェクトをマップとして使用できます。QMLで直接操作することはできませんが、このオブジェクトを処理するすべてのコードをJavaScriptファイルに移動して、モジュールとして含めることができます。簡単な例を次に示します。

Map.js:

var _map = new Object()

function value(key) {
    return _map[key]
}

function setValue(key, value) {
    _map[key] = value
}

function remove(key) {
    delete _map[key]
}

function keys() {
    return Object.keys(_map)
}

function process() {
    for (var key in _map) {
        /* do something */
    }
}

QMLの例:

import QtQuick 1.1
import "Map.js" as Map

Item {
    Component.onCompleted: {
        Map.setValue("test", "hello")
        console.log("test = ", Map.value("test"))
        Map.remove("test", "hello")
        console.log("test = ", Map.value("test"))
    }
}

出力は次のようになります。

test =  hello
test =  undefined
于 2012-08-12T11:35:03.283 に答える