Proprietate dinamică numele de misiuni în interiorul delegat

0

Problema

Am încercat să includ un obiect Setările în interiorul delegat de un Repetor, astfel încât să pot salva valoarea unui cîmp cu incrementare. Cu toate acestea, eu nu pot da seama cum de a seta dinamic proprietatea nume.

Ceea ce vreau să realizeze este de a avea proprietate, alias pentru a fi la fel ca modelData. De exemplu, pentru item1: "proprietatea alias item1: cutie.valoare"; pentru item2: "proprietatea alias item2: cutie.valoarea", 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
            }
        }
    }
}

Codul de mai sus generează următoarele setări, și este o lucrare în jurul a ceea ce am vrut să fac:

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

Ceea ce vreau este o singură categorie cu valorile, astfel:

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

Cel mai bun răspuns

1

Pentru acest caz, nu puteți utiliza proprietăți, dar value() și setValue() metode:

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

Ieșire:

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

Aceasta funcționează perfect. Singurul lucru pe care aș putea să menționez este că am stabilit onValueChanged proprietate din cutie pentru a salva setările pentru a reproduce alias comportament.
Vlad

@Vlad Da, știu, am fost de gând să adăugați, dar IMO nu este necesar pentru a le salva de la toate ori, am prefera ca sarcina este la început și de a salva de la sfârșitul.
eyllanesc

În alte limbi

Această pagină este în alte limbi

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