Вопрос

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top