2015-06-24 4 views
2

Мне нужно установить значение spinbox в один из 1, 10, 100, 1000, 10000, если значение изменено кнопками со спинкой или колесом мыши или клавишами вверх или вниз , Но если значение изменено клавиатурой, мне нужно другое поведение.Как проверить, изменилось ли значение QSpinBox с помощью клавиатуры или кнопок (колесико мыши)

Вот мой код для кнопок, колесика мыши, клавиш вверх и вниз.

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

Как можно изменить поведение клавиатуры на клавиатуре?

ответ

1

В этом случае, я думаю, вы создадите свой собственный спинбокс, полученный от QSpinBox. И вам необходимо будет переопределить, по меньшей мере, следующие функции:

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

с вашими спецификациями.

+0

Проверьте эту функцию ['QAbstractSpinBox :: stepBy (int)'] (http://doc.qt.io/qt-5/qabstractspinbox.html#stepBy). –