委托内的动态 属性 名称分配
Dynamic property name assignments inside delegate
我试图在 Repeater 的委托中包含一个 Settings 对象,以便我可以保存 SpinBox 的值。但是,我不知道如何动态设置 属性 别名。
我想要实现的是让 属性 别名与 modelData 相同。例如,对于 item1:“属性 别名 item1:box.value”;对于 item2:“属性 别名 item2:box.value”,等等
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
}
}
}
}
上面的代码生成了以下设置,并且是我想做的事情的变通方法:
[item1]
value=""
[item2]
value=""
[item3]
value=""
...
我想要的是具有值的单个类别,如下所示:
[category]
item1=""
item2=""
item3=""
...
对于这种情况,您不能使用属性,只能使用 value()
and setValue()
方法:
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)
}
}
}
}
输出:
[category]
item1=6
item2=6
item3=4
item4=2
item5=2
我试图在 Repeater 的委托中包含一个 Settings 对象,以便我可以保存 SpinBox 的值。但是,我不知道如何动态设置 属性 别名。
我想要实现的是让 属性 别名与 modelData 相同。例如,对于 item1:“属性 别名 item1:box.value”;对于 item2:“属性 别名 item2:box.value”,等等
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
}
}
}
}
上面的代码生成了以下设置,并且是我想做的事情的变通方法:
[item1]
value=""
[item2]
value=""
[item3]
value=""
...
我想要的是具有值的单个类别,如下所示:
[category]
item1=""
item2=""
item3=""
...
对于这种情况,您不能使用属性,只能使用 value()
and setValue()
方法:
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)
}
}
}
}
输出:
[category]
item1=6
item2=6
item3=4
item4=2
item5=2