【问题标题】:Spinbox change values on keypress in qmlSpinbox在qml中的按键上更改值
【发布时间】:2019-04-17 08:57:03
【问题描述】:

是否可以在按键而不是输入时自动更改旋转框的值?问题如下,假设我们进入第一的输入:

现在我把它改成数字 10,但不要点击enter

现在我点击加号,它转到第二个:

如何改变这一点,当我失去焦点或点击旋转框的减号或加号时,会自动考虑最后一位数字?

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
            }
        }
}

}

【问题讨论】:

  • 嗨!你有任何代码来复制一个例子吗?您可以在 spinBox.currentValue 更改时使用它,或者如果您的旋转框值不太高,您可以始终禁用输入,以便用户只能使用加号/减号?(取决于使用)如果您发布一个小我们可以运行的代码示例也许可以给出答案! :)
  • 是的@Ldweller 我从一个小的可行的旋转框示例中获取了这个,但这是默认旋转框的工作方式,我只需要检查它是哪个版本的控件。
  • 嗨@Nmaster88 我仍在努力为您寻找解决方案,我现在已经删除了我的答案,希望可以尽快为您发布一个有效的修复程序!
  • 非常感谢@Ldweller,我一直在努力寻找解决方案,但我在这方面的技能仍然不多

标签: qt qml


【解决方案1】:

您可以使用 SpinBox 的属性“contentItem”并添加一个 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);
                }
            }
        }

【讨论】:

  • 这似乎运作良好:P,但它失去了默认旋转框的蓝色焦点,有没有办法得到它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2020-02-01
  • 1970-01-01
相关资源
最近更新 更多