Dinámica de la propiedad nombre de asignaciones dentro de delegado

0

Pregunta

Estoy tratando de incluir un objeto de Configuración dentro del delegado de un Repetidor para que pueda guardar el valor de una caja de Hilatura. Sin embargo, yo no puedo entender cómo, de forma dinámica, establezca la propiedad nombre de alias.

Lo que quiero lograr es tener la propiedad nombre de alias a ser el mismo que el modelData. Por ejemplo, para elemento1: "la propiedad de alias elemento1: cuadro.valor"; para item2: "la propiedad de alias item2: cuadro.valor", etc.

Column {
    Repeater {
        model: ["item1", "item2", "item3", "item4", "item5"]
        delegate: RowLayout {
            Settings {
                fileName: "config"
                category: modelData
                property alias value: box.value
            }
            Label {
                text: modelData
            }
            SpinBox {
                id: box
            }
        }
    }
}

El código anterior genera la siguiente configuración, y es un trabajo en torno a lo que yo quería hacer:

[item1]
value=""
[item2]
value=""
[item3]
value=""
...

Lo que yo quiero es una sola categoría con los valores, así:

[category]
item1=""
item2=""
item3=""
...
qml qt qt6
2021-11-20 01:36:52
1

Mejor respuesta

1

Para este caso, usted puede utilizar las propiedades, pero la value() y setValue() métodos:

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Qt.labs.settings

ApplicationWindow {
    width: 640
    height: 480
    visible: true

    readonly property var values: ["item1", "item2", "item3", "item4", "item5"]
    Settings {
        id: settings
        category: "category"
    }

    Column {
        Repeater {
            model: values
            delegate: RowLayout {
                id: row_layout
                Label {
                    text: modelData
                }
                SpinBox {
                    id: box
                }
                Component.onCompleted: box.value = settings.value(modelData, 0)
                Component.onDestruction: settings.setValue(modelData, box.value)
            }
        }
    }
}

Salida:

[category]
item1=6
item2=6
item3=4
item4=2
item5=2
2021-11-20 02:21:15

Esto funciona perfectamente. Lo único que podría mencionar es que puse el onValueChanged propiedad de la caja para guardar la configuración para replicar el alias de comportamiento.
Vlad

@Vlad Sí, yo sé, yo iba a agregar pero IMO no es necesario guardar en todo momento, prefiero que la carga está en el principio y guardar en la final.
eyllanesc

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................