import QtQuick 2.0 import QtQuick.Controls 2.9 import QtQuick.Controls.Material 2.0 ItemDelegate { id: control property string value: "" property alias from: spinBox.from property alias to: spinBox.to property bool editable: false onClicked: { spinBox.value = control.value textEditDialog.open() } Text { anchors { right: nextPageIconText.left verticalCenter: parent.verticalCenter rightMargin: control.padding } font.pixelSize: parent.font.pixelSize color: control.Material.foreground text: value === "" ? "Not set": value + "" } Text { id: nextPageIconText anchors { right: parent.right verticalCenter: parent.verticalCenter rightMargin: control.padding } font.pixelSize: parent.height * 0.5 font.styleName: fontAwesome.name verticalAlignment: Text.AlignVCenter color: control.Material.foreground text: "\uf105" } Dialog { id: textEditDialog parent: Overlay.overlay x: (parent.width - width) / 2 y: (parent.height - height) / 2 width: parent.width * 0.9 Material.theme: control.Material.theme Material.accent: control.Material.accent modal: true title: control.text standardButtons: Dialog.Ok | Dialog.Cancel contentItem: SpinBox { id: spinBox value: control.value editable: control.editable } onAccepted: { control.value = spinBox.value } } }