如何检查 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 );
根据您的规格。
如果通过旋转框按钮或鼠标滚轮或上下键更改值,我需要将旋转框值设置为 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 );
根据您的规格。