2011-11-09 117 views
1

在我的Qt快速应用程序中,我使用C++生成一个介于1和6之间的数字,然后将其发送到QML函数。我有六个自定义Block对象或元素(我不知道你称他们为什么)。这些块被称为block1 - 6。我想要的功能像block"i".visible = true,但我不确定如何做到这一点。如果有人可以请帮助它将不胜感激。Qml编辑变量对象或元素

回答

0

而不是宣布6个单独的块,声明一个大小为6的数组,您可以这样做block[i].visible = true

+1

怎样申报的6块QML一个数组? – Gerharddc

+0

var block = [];它必须以Javascript样式嵌入或在外部Javascript文件中完成。现在,当你想创建一个“块”(一个可视化的QML元素)时,你需要像这样分配它,一种动态的方式,block [0] = Qt.createComponent(“Block.qml”); – RajaRaviVarma

1

这里是你可以避免手动创建在JavaScript中块的方式:

假设所有的块相同的父的孩子,你可以访问他们的parentsId.children[0]通过parentsId.children[5](或parentsId.children[n]通过parentsId.children[n+5]如果父有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; 
    } 
}