Изменение значений Spinbox при нажатии клавиш в qml - PullRequest
0 голосов
/ 17 апреля 2019

Можно ли автоматически изменять значение прядильной камеры при нажатии клавиши вместо ввода?Проблема заключается в следующем, давайте предположим, что мы идем к входу, где у нас есть номер один: enter image description here

И теперь я изменяю его на номер 10, но не нажимаю enter:

enter image description here

Теперь я нажимаю на знак плюс, и он переходит ко второму номеру:

enter image description here

Как это можно изменить таким образом, чтобы при потере фокуса или нажатии на знак минуса или плюса в spinbox автоматически учитывалось последнее введенное число?

Этоэто то, что происходит с QtQuick.Controls 2.0

Пример:

import QtQuick 2.9
import QtQuick.Controls 2.0

ApplicationWindow {
    id: window
    title: "Stack"
    visible: true
    height: 200
    width: 400
    Item {
        id: page
        anchors.fill: parent
        width:parent.width
        height: parent.height
            Column{
                width:parent.width
                spacing:10
                SpinBox {
                    id: spinBox1


      width: 100
                height: 30
                stepSize: 1
                editable: true
            }
        }
}

}

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете использовать свойство "contentItem" SpinBox и добавить TextInput.
TextInput имеет обработчик сигнала "onTextChanged".

SpinBox {
            id: spinbox
            value: 10
            editable: true
            contentItem: TextInput {
                text: spinbox.textFromValue(spinbox.value, spinbox.locale)
                font: spinbox.font
                horizontalAlignment: Qt.AlignHCenter
                verticalAlignment: Qt.AlignVCenter
                readOnly: !spinbox.editable
                validator: spinbox.validator
                inputMethodHints: Qt.ImhFormattedNumbersOnly
                onTextChanged: {
                   spinbox.value =  parseInt(text);
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...