子类型中顶级类型的增量 QML 属性
Increment QML property of top-level type in child type
我是 Qt 和 QML 的新手。我正在尝试在名为 buttonIndex 的顶部元素处设置一个 属性,以便子元素可以通过将 Button 元素中的值递增为来更改 属性使名称从“设备 1”->“设备 15”开始。下面是我的 QML 代码:
Page {
id: page_device
width: 1024
height: 600
property int buttonWidth: 170;
property int buttonHeight: 100;
property int buttonIndex: 1;
header: Label {
id: label_header_devices
text: qsTr("Devices")
font.pixelSize: Qt.application.font.pixelSize * 2
padding: 20
}
Item {
id: item_devices
width: 300
height: 200
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
Column {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
spacing: 10
Repeater {
id: item_devices_rows
model: 3
Row {
spacing: 10
Repeater {
id: item_devices_columns
model: 5
Button {
id: button_device_
width: buttonWidth
height: buttonHeight
text: qsTr("Device ") + page_device.buttonIndex++
Material.foreground: Material.Pink
enabled: false
hoverEnabled: false
// onClicked: Material.background = Material.Teal
}
}
}
}
}
}
}
我得到的输出是不需要的。我得到“设备 107”、“设备 108”、“设备 109”等。我需要让它从 1-15 开始。我尝试在代码中使用信号 itemAdded 并重新分配 buttonIndex 的值每次递增 1 但这没有用任何一个。而且我还需要存储 Button 类型的 buttonIndex,例如“item_device_button_1”。知道如何解决这个问题吗?
如@folibis 所述,您无需为此创建自己的 属性。中继器(和 ListViews 等)为委托人提供了一个名为 index
的 属性 访问权限,它已经完全满足您的要求。该索引是从 0 开始的,因此如果您希望它从“1”开始,则只需添加 +1。
Repeater {
Button {
text: qsTr("Device ") + (index + 1)
}
}
我是 Qt 和 QML 的新手。我正在尝试在名为 buttonIndex 的顶部元素处设置一个 属性,以便子元素可以通过将 Button 元素中的值递增为来更改 属性使名称从“设备 1”->“设备 15”开始。下面是我的 QML 代码:
Page {
id: page_device
width: 1024
height: 600
property int buttonWidth: 170;
property int buttonHeight: 100;
property int buttonIndex: 1;
header: Label {
id: label_header_devices
text: qsTr("Devices")
font.pixelSize: Qt.application.font.pixelSize * 2
padding: 20
}
Item {
id: item_devices
width: 300
height: 200
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
Column {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
spacing: 10
Repeater {
id: item_devices_rows
model: 3
Row {
spacing: 10
Repeater {
id: item_devices_columns
model: 5
Button {
id: button_device_
width: buttonWidth
height: buttonHeight
text: qsTr("Device ") + page_device.buttonIndex++
Material.foreground: Material.Pink
enabled: false
hoverEnabled: false
// onClicked: Material.background = Material.Teal
}
}
}
}
}
}
}
我得到的输出是不需要的。我得到“设备 107”、“设备 108”、“设备 109”等。我需要让它从 1-15 开始。我尝试在代码中使用信号 itemAdded 并重新分配 buttonIndex 的值每次递增 1 但这没有用任何一个。而且我还需要存储 Button 类型的 buttonIndex,例如“item_device_button_1”。知道如何解决这个问题吗?
如@folibis 所述,您无需为此创建自己的 属性。中继器(和 ListViews 等)为委托人提供了一个名为 index
的 属性 访问权限,它已经完全满足您的要求。该索引是从 0 开始的,因此如果您希望它从“1”开始,则只需添加 +1。
Repeater {
Button {
text: qsTr("Device ") + (index + 1)
}
}