Подтвердить что ты не робот

QSlider Value Измененный сигнал

Я использую QSlider (v4.6) для ввода, а также для предоставления обратной связи пользователю. Для обратной связи я буду вызывать метод setValue. Я пытаюсь найти сигнал, который будет срабатывать, только если пользователь изменил значение. Сигнал valueChanged срабатывает, когда пользователь меняет значение, а также когда я вызываю setValue. sliderMoved срабатывает только тогда, когда пользователь перетаскивает слайдер (не при использовании клавиатуры). Я проверил документы API и не могу найти ничего. Я что-то упускаю? Это похоже на то, что было бы общим. Если нет другого сигнала, как бы вы рекомендовали мне имитировать эту функциональность? Должен ли я установить флаг перед вызовом setValue, отключать и повторно подключать сигнал каждый раз, когда я вызываю setValue...?

4b9b3361

Ответ 1

Хороший вопрос, я проверил API, а также не смог найти сигнал, который будет срабатывать только в том случае, если значение было изменено пользователем. Обходной путь, который вы предложили, может быть единственным вариантом, просто имейте в виду, что вам не нужно отключать/подключать все сигналы, просто используйте метод QObject::blockSignals:

slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);

Надеюсь, что это поможет.