Proprietà dinamiche nome di incarichi all'interno del delegato

0

Domanda

Sto cercando di includere un oggetto Impostazioni all'interno del delegato di un Ripetitore in modo che io possa salvare il valore di un Quadrante. Tuttavia, io non riesco a capire come impostare dinamicamente le proprietà nome di alias.

Quello che voglio ottenere è quello di avere la proprietà del nome di alias per essere lo stesso come modelData. Per esempio, per item1: "proprietà alias item1: box.valore"; per item2: "proprietà alias item2: box.valore", 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
            }
        }
    }
}

Il codice di cui sopra genera le seguenti impostazioni, ed è un lavoro intorno a quello che volevo fare:

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

Quello che voglio è una singola categoria con i valori, in questo modo:

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

Migliore risposta

1

Per questo caso non è possibile utilizzare la proprietà ma l' value() e setValue() metodi:

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)
            }
        }
    }
}

Output:

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

Questo funziona perfettamente. Unica cosa che potrei dire è che ho impostato il onValueChanged proprietà della casella per salvare le impostazioni di replicare l'alias comportamento.
Vlad

@Vlad Sì, lo so, stavo per aggiungere, ma IMO non è necessario salvare in ogni momento, preferisco che il carico è all'inizio e si salva alla fine.
eyllanesc

In altre lingue

Questa pagina è in altre lingue

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