JavaScript и QML
От: agg  
Дата: 06.03.14 06:21
Оценка:
Всем привет, есть код на QML и JavaScript:

myfunctions.js
var r=0.1
var g=0.2
var b=0.3

function func(a)
{
    a=a+0.1
    if(a>1) a=0.1
    console.debug("Current color:" + a)
    return a;
}


myqml.qml
import QtQuick 2.0
import "myfunctions.js" as MYSCRIPT
Rectangle {
    width: 360
    height: 360

    ListModel {
        id: dataModel
    }
    Column {
        anchors.margins: 10
        anchors.fill: parent
        spacing: 10
        ListView {
            id: view
            width: parent.width
            height: parent.height - button.height - parent.spacing
            spacing: 10
            model: dataModel
            clip: true
            delegate: Rectangle {
                width: view.width                    
                height: 40
                color: Qt.rgba(MYSCRIPT.func(MYSCRIPT.r),MYSCRIPT.func(MYSCRIPT.g),MYSCRIPT.func(MYSCRIPT.b),0.7)
                Text {
                    anchors.centerIn: parent
                    renderType: Text.NativeRendering
                    text: model.index
                }
            }
        }
        Rectangle {
            id: button
            width: 100
            height: 40
            anchors.horizontalCenter: parent.horizontalCenter
            border {
                color: "black"
                width: 1
            }
            Text {
                anchors.centerIn: parent
                renderType: Text.NativeRendering
                text: "Add"
            }
            MouseArea {
                anchors.fill: parent
                onClicked: dataModel.append({})
            }
        }
    }
}

Этот код в ListView добавляет элементы в виде залитых цветом прямоугольников, вопрос заключается в следующем, в скрипте объявлены переменные r,g,b они соответствуют трем параметрам цвета, хотелось каждый новый прямоугольник с другим цветом для этого написана функция в скрипте которая меняет значение от 0.1 до 1, строка задания цвета Qt.rgba(MYSCRIPT.func(MYSCRIPT.r),MYSCRIPT.func(MYSCRIPT.g),MYSCRIPT.func(MYSCRIPT.b),0.7) передает переменные r,g,b в функцию func для каждого из трех компонент цвета, но в дебаг лог получаем такие данные с каждым новым нажатием :
Первое добавление прямоугольника
Current color:0.2
Current color:0.30000000000000004
Current color:0.4
Второе добавление прямоугольника
Current color:0.2
Current color:0.30000000000000004
Current color:0.4

Переменные не сохраняют свои значения до следующего вызова, как сделать что бы сохранялись выячесленные значения?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.