2011-06-30 9 views
2

実行時にqmlファイルからQDeclarativeListPropertyに項目を追加する理由は何ですか?例えばループ内 、:qt QDeclarativeListProperty qmlアプリケーションから項目を追加

var i;
for(i = 0 ; i < 100 ; ++i)
{ listOfItems.append(MyItem {text:"list"+i})
}

とlistOfItemsがQDeclarativeListPropertyリストです... 私はそれを行うにはしたくない:

listOfItems:  
    [    
     MyItem{text:"list val1"}, 
     MyItem{text:"list val2"},  
     ...... 
    ] 

私はQMLでこのリストを表示し、リストのデータはQtオブジェクトから得られます。

答えて

2

あなたは、(Qt5またはQQmlListPropertyQDeclarativeListPropertyは、インスタンス化時に、あなたが/追加することはできません、その後、その中に任意の要素を削除し、一度だけの影響を受けていることはできません。

さらに、JavaScriptコードでは、Class { }構文フォームを使用することはできません.QML固有のものです。

+0

JS命令コードから新しいQMLオブジェクトを作成するには、 'Qt.createComponent() 'メソッドを呼び出すことができますが、作成されたオブジェクトにリストプロパティを適用することはできません。 – TheBootroo

+0

おそらく、アイテムのリストが必要な場合は、最初に正しいメソッドでコンポーネントを作成し、このアイテムへの参照をJs配列を含むことができる 'var'プロパティに追加して、その中で.push(myitem)を実行できるようにします。 – TheBootroo

+0

この配列をC++側にする必要がある場合、いくつかのQVariantListのトリッキーなことが必要になりますので、本当にこの概念が必要な場合やもっと簡単なことができるかどうか考えてみてください。 – TheBootroo

関連する問題