История изменений
Исправление Siborgium, (текущая версия) :
Тебе выше правильно ответили, API не подразумевает доступа к кнопочкам, все, что ты накостыляешь, костылями и останется.
Можешь как-то попытаться играть от того, что QSpinBox наследует от QWidget. Переписать обработчик событий, как-то вычислять кнопку в нем. Можешь сделать листенер, по сигналу valueChanged
сравнивающий значение с предыдущим, сохраненным у себя. Например, если увеличилось, то был нажат инкремент, если уменьшилось, то декремент.
Однако, повторюсь, все это жуткие костыли. Если тебе действительно нужен этот функционал, сделай лучше свой SpinBox, со своими event’ами. Получится и проще, и поддерживаемее.
Вообще говоря, не понял прикола делать все эти QStepType, step’ы, когда можно было бы просто принимать две функции (или одной доп. параметр передавать). Тогда можно было бы и обычный QSpinBox запилить просто с помощью [](auto& n){ n += 1; }
, и все кастомные типы данных в спинбокс пихать было бы тривиально, и никаких хаков для вычисления кнопок тем более не надо было бы. Но это уже пусть на совести разработчиков Qt остается.
Исходная версия Siborgium, :
Тебе выше правильно ответили, API не подразумевает доступа к кнопочкам, все, что ты накостыляешь, костылями и останется.
Можешь как-то попытаться играть от того, что QSpinBox наследует от QWidget. Переписать обработчик событий, как-то вычислять кнопку в нем. Можешь сделать листенер, по сигналу valueChanged
сравнивающий значение с предыдущим, сохраненным у себя. Например, если увеличилось, то был нажат инкремент, если уменьшилось, то декремент.
Однако, повторюсь, все это жуткие костыли. Если тебе действительно нужен этот функционал, сделай лучше свой SpinBox, со своими event’ами. Получится и проще, и поддерживаемее.
Вообще говоря, не понял прикола делать все эти QStepType, step’ы, когда можно было бы просто принимать две функции (или одной доп. параметр передавать). Тогда можно было бы и обычный QSpinBox запилить просто с помощью [](auto& n){ n += 1; }
, и все кастомные типы данных в спинбокс пихать было бы тривиально, и никаких хаков для вычисления кнопок тем более не надо было бы.