2015-03-06 2 views
0

Я создаю некоторые Rectangle сек динамически с собой Text элемента внутри так:Динамического создания элементов с текстом из глобального свойства в QML

Rectangle { 
    id: root 
    width: 640; height: 480 

    property var items: [] 
    property int count 

    function push() { 
     var temp = Qt.createQmlObject("import QtQuick 2.3; Rectangle {width: 100; height: 30;color: 'yellow'; Text {text: count; anchors.centerIn: parent}}", root, "") 
     temp.x = Math.floor(Math.random()*200 + 1) 
     temp.y = Math.floor(Math.random()*200 + 1) 
     items[count] = temp 
     count++ 
    } 

    MouseArea { 
     anchors.fill: parent 
     onClicked: push() 
    } 
} 

Теперь, когда я вызываю функцию push, щелкнув, он создает новый прямоугольник с текущим значением count. Но проблема в том, что все прямоугольники, созданные до сих пор, меняют свой текст на текущее значение count. Мне нужно создать прямоугольники с текущим значением count, и они не должны менять свой текст, когда count изменяет послесловие. Как я могу это сделать? Благодаря!

ответ

2

Rectangle S вы создаете этот код:

Text { 
    text: count 
    anchors.centerIn: parent 
} 

Здесь есть связывание между text собственности и count. Поэтому, когда изменяется count, это отразится на text. Вам нужно бежать счетчик в вашем определении строки фактически конкатенации текущего значения count так, что код первого элемента является:

Text { 
    text: '0' 
    anchors.centerIn: parent 
} 

Вы код Шоуда тогда:

Rectangle { 
    id: root 
    width: 640; height: 480 

    property var items: [] 
    property int count 

    function push() { 
     var temp = Qt.createQmlObject("import QtQuick 2.3; Rectangle {width: 100; height: 30;color: 'yellow'; Text {text: '"+count+"'; anchors.centerIn: parent}}", root, "") 
     temp.x = Math.floor(Math.random()*200 + 1) 
     temp.y = Math.floor(Math.random()*200 + 1) 
     items[count] = temp 
     count++ 
    } 

    MouseArea { 
     anchors.fill: parent 
     onClicked: push() 
    } 
} 
+0

Спасибо! Мне это нужно. –

Смежные вопросы