// SPDX-License-Identifier: Unlicense import QtQuick 2.12 import QtQuick.Controls 2.13 import '../util.js' as Util Flow { id: control property var model readonly property string value: choices.checkedButton && choices.checkState !== Qt.Unchecked ? choices.checkedButton.name : '' function set(val) { choices.checkState = Qt.Unchecked for (var i = 0; i < buttons.count; i++) { if (buttons.itemAt(i).name === val) { buttons.itemAt(i).checked = true break } } return value === val } spacing: 5 Keys.forwardTo: Array.from({ length: buttons.count }, (_, i) => buttons.itemAt(i)) ButtonGroup { id: choices } Repeater { id: buttons model: control.model.values delegate: Button { required property int index required property var modelData readonly property string name: modelData.name text: Util.addShortcut(name, modelData.key) ButtonGroup.group: choices checkable: true focusPolicy: Qt.NoFocus implicitWidth: implicitContentWidth + leftPadding + rightPadding padding: 0 leftPadding: 5 rightPadding: leftPadding Keys.onPressed: { if (modelData.key === event.text) { checked = !checked event.accepted = true } } } } }