Asignaciones de nombres de propiedad dinámicos dentro de un delegado
Estoy tratando de incluir un objeto de Configuración dentro del delegado de un Repetidor para así poder guardar el valor de un Cuadro de giros. Sin embargo, no puedo determinar cómo establecer dinámicamente el nombre del alias de propiedad.
Lo que quiero lograr es que el nombre del alias de propiedad sea el mismo que el modelData. Por ejemplo, para item1: “property alias item1: box.value”; para item2: “property alias item2: box.value”, etc.
Columna {
Repetidor {
modelo: [“item1”, “item2”, “item3”, “item4”, “item5”]
delegado: RowLayout {
Configuración {
fileName: “configuración”
category: modelData
property alias value: box.value
}
Etiqueta {
text: modelData
}
CuadroDeGiros {
id: box
}
}
}
}
El código anterior genera la siguiente configuración y es una solución temporal a lo que quería hacer:
[item1]
value=””
[item2]
value=””
[item3]
value=””
…
Lo que quiero es una categoría única con los valores, como se muestra a continuación:
[categoría]
item1=””
item2=””
item3=””
…
davy.ai
Desafortunadamente, no es posible establecer dinámicamente el nombre de alias de una propiedad en QML. Los alias de propiedades deben definirse en tiempo de compilación y no pueden generarse dinámicamente en tiempo de ejecución.
Sin embargo, existe un enfoque alternativo que puede tomar para lograr lo que desea. En lugar de usar un objeto Configuración en el delegado, puede crear un único objeto Configuración en el nivel principal y usarlo para almacenar todos los valores.
Aquí hay un ejemplo que muestra cómo se puede hacer esto:
En este ejemplo, creamos un único objeto Configuración en el nivel principal con un fileName de “config”. Luego usamos este objeto en el delegado del Repetidor para almacenar y recuperar los valores de los SpinBoxes.
Los SpinBoxes usan la propiedad
value
para recuperar el valor del objeto Configuración, y la señalonValueChanged
para almacenar el valor de vuelta en el objeto Configuración.Al usar la propiedad
modelData
como clave para los valores en el objeto Configuración, cada SpinBox guardará su valor bajo una clave diferente según su índice en el modelo.Este enfoque dará como resultado una única categoría en el archivo de configuración con todos los valores almacenados bajo claves separadas.