如何检查 QSpinBox 值是否被键盘或按钮(鼠标滚轮)更改

How to check if QSpinBox value changed by keyboard or buttons(mouse wheel)

如果通过旋转框按钮或鼠标滚轮或上下键更改值,我需要将旋转框值设置为 1、10、100、1000、10000 之一。但是如果值被键盘改变,我需要其他行为。

这是我的按钮、鼠标滚轮、上下键的代码。

void Dlg::onValueChanged(int value)
{
    if (value > _value)
        value = (value - 1) * 10;

    value = log10(value);
    value = _Pow_int(10, value);

    _ui->spinBoxs->setValue(_value = value);
}

如何通过键盘更改值的其他行为?

在这种情况下,我认为您将创建从 QSpinBox 派生的自定义旋转框。您至少需要重新实现以下功能:

virtual void keyPressEvent( QKeyEvent* event );
virtual void wheelEvent( QWheelEvent* event );

根据您的规格。