Обработчик изменения значения spinBox

Имеется главное окно на котором расположены LineEdit и кнопки: одна отправляет по uart данные веденные в lineEdit, другая отправляет команду на их применение, третья вызывает виджет на котором расположен spinBox, который принимает значение установленное в lineEdit главного окна. Это уже реализовано.

Главное окно по своей сути принимает данные от пользователя и передает их в в девайс собранный на stm32. Второе окно нужно для реализации непрерывной отправки данных (без кнопки "применить"). Пользователь изменил данные в spinBox, - это привело к событию и обработчик события определил в какую сторону произошло изменение, далее следует отправка: соответствующей команды и разницы значений spinBox до и после события. На этом этапе произошел затык. Очень рассчитываю на вашу помощь. B QT - новичек. Пишу свое первое приложение.

Вопрос: Возможно ли в среде QT реализовать обработчик spinBox , в котором определялось изменение введеного значения, т. е. значение стало больше или меньше?

При этом нужно определить разницу между значением которое было до изменения и уже измененным.


Ответы (1 шт):

Автор решения: Alexander Chernin

В классе окна заведите значение предыдущее значение в QSpinBox (_prev):

class Window :... {
    Window() {
        _prev = ui->spinBox->value();
        connect(ui->spinBox, &QSpinBox::valueChanged, 
                this, &Window::spinValueChanged);
    }

private slots:
    void spinValueChanged(int current) {
        // Вычисляем разницу
        int _d = _prev - current;
        // Проверяем - стало больше, меньше и так далее
    }

private:
    int _prev;
}
→ Ссылка