Всем привет, есть код на 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
Переменные не сохраняют свои значения до следующего вызова, как сделать что бы сохранялись выячесленные значения?