2011-11-09 7 views
1

Qtのクイックアプリケーションでは、1から6までの数字を生成するためにC++を使用します。これは、QML関数にシグナルとともに送信されます。私は6つのカスタムBlockオブジェクトまたは要素を持っています。ブロックはblock1-6と呼ばれます。私はblock"i".visible = trueのような機能にしたい、しかし私は正確にそれを行う方法がわからない。誰かが助けてくれれば大いに感謝します。Qml変数オブジェクトまたは要素を編集する

答えて

0

6個のブロックを宣言する代わりに、サイズが6の配列を宣言すると、block[i].visible = trueのようになります。ここで

+1

がどのように私はQMLで6つのブロックの配列を宣言するのですか? – Gerharddc

+0

var block = [];それは、埋め込まれているか、外部のJavascriptファイルのどちらかで、Javascriptスタイルで行われなければなりません。ここで、「ブロック」(ビジュアルなQML要素)を作成したい場合は、動的な方法でこれを割り当てる必要があります。ブロック[0] = Qt.createComponent( "Block.qml"); – RajaRaviVarma

1

は、手動JavaScriptでブロックを作成することを避けることができる方法です。すべてのブロックを想定すると

は、同じ親の子である、あなたが親ならばparentsId.children[n+5]を通じてparentsId.children[5](またはparentsId.children[n]を通じてparentsId.children[0]としてそれらにアクセスすることができますボックスの前に来る子供はnです)。

したがって、このような何かが働くだろう:

Rectangle { 
    // ... 

    Item { 
     id: blocks 

     Block { 
      id: block1 
      // ... 
     } 
     // ... 

     Block { 
      id: block6 
      // ... 
     } 
    } 
    // ... 

    function makeBlockVisible(i) { 
     // subtracting 1 from i because you said i is a number between 1 and 6 
     // and we need an index between 0 and 5 
     blocks.children[i-1].visible = true; 
    } 
} 
関連する問題