Значение QSlider изменено сигнал - PullRequest
23 голосов
/ 10 ноября 2010

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

1 Ответ

38 голосов
/ 10 ноября 2010

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

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

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

...