Sum slider value in a Gridview
Unsolved
QML and Qt Quick
-
Hello
In my recent project, I have several sliders in a gridview. I plan to sum two different slider's value.
For example, I want to sum the value of the first and third slider (with Gray and Blue color) and show that in the up textbox (its current value is 0).import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.3 Window { visible: true width: 640 height: 480 GridView { id: gridView x: 44 y: 116 width: 332 height: 289 boundsBehavior: Flickable.DragOverBounds flickableDirection: Flickable.VerticalFlick contentWidth: 70 layoutDirection: Qt.LeftToRight contentHeight: 70 flow: GridView.FlowTopToBottom model: ListModel { ListElement { name: "Grey" colorCode: "grey" } ListElement { name: "Red" colorCode: "red" } ListElement { name: "Blue" colorCode: "blue" } ListElement { name: "Green" colorCode: "green" } } cellHeight: 70 cellWidth: 70 delegate: Item { x: 5 height: 50 Column { id: column Slider { id: slider x: 82 y: 45 to: 10 value: 0 } Text { id: name text: Math.floor(slider.value) color:colorCode anchors.horizontalCenter: parent.horizontalCenter } spacing: 5 } } } Text { id: name1 x: 228 y: 80 width: 27 height: 24 text: Math.floor(0) } }
-
@amir.sanaat
Do you really need to use a model/view approach for this? -
@Diracsbracket
No, there is any force to use list model but I want the sliders have flikeable property.
What's your idea? -
@amir.sanaat
Then you could do the following instead:- Put your slider (with as root the
Column
) in a qml file to make it a custom type. Define
aliases for the color and value properties such that you can access them outside. - Instantiate your sliders and put them directly inside a
Column
and put that inside aFlickable
. Give theFlickable
the same relevant properties as you did in youGridView
.
Doing it like this gives your direct access to the sliders properties without the complications of having to access your slider items via their index in the
GridView
as you did.In your sum
Text
, you can thus simply use:text: (Math.floor(greySlider.value + blueSlider.value)).toString()
- Put your slider (with as root the