Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xintrea от Март 17, 2009, 15:53



Название: QSpinBox - как ловить значение при нажатии Enter?
Отправлено: xintrea от Март 17, 2009, 15:53
Здравствуйте!


Столкнулся с такой проблемой. Есть QSpinBox, у него есть сигнал valueChanged(). Этот сигнал вызывается при любом изменении значения в поле ввода. А это значит, что если пользователь  вводит с клавиатуры, например, двузначное число, то сигнал будет сгенерирован два раза (на первую цифру, и на вторую).

А нужно, чтобы сигнал генерировался только когда пользователь ввел всё число, и нажал Enter (и генерировался при нажатии стрелок вверх-вниз, само собой).

Как можно сделать таким поведение QSpinBox?


Название: Re: QSpinBox - как ловить значение при нажатии Enter?
Отправлено: Rcus от Март 17, 2009, 16:01
void QAbstractSpinBox::editingFinished ()   [signal]


Название: Re: QSpinBox - как ловить значение при нажатии Enter?
Отправлено: xintrea от Март 17, 2009, 16:51
Ну, этот сигнал не эмитится, когда перетыкаются стрелками значение.

Получается ситуация - если мы используем только editingFinished(), то реакция QSpinBox идет только на ввод с клавиатуры при нажатии Enter.

Чтобы работал ввод при нажатии стрелок мышкой, приходится использовать valueChanged(). А этот сигнал эмитится и при вводе числа с клавиатуры на каждую введенную цифру.

А как сделать, чтоб работало более ожидаемо, как это написано в начале темы?