Russian Qt Forum

Qt => Общие вопросы => Тема начата: trot от Июль 13, 2010, 18:04



Название: QLineEdit обработка измененного текста
Отправлено: trot от Июль 13, 2010, 18:04
Помогите пожайлуста.
Необходимо  обработать изменный текст в QLineEdit. Создал слот, который начинает работу по сигналу editingFinished. В этом слоте пытаюсь оценить, был ли изменен текст. Для этого использовал метод isModified (), но он всегда возвращает true.
Что посоветуете?


Название: Re: QLineEdit обработка измененного текста
Отправлено: kibsoft от Июль 13, 2010, 20:41
А чем сигнал textChanged не подходит?


Название: Re: QLineEdit обработка измененного текста
Отправлено: trot от Июль 14, 2010, 11:35
Он срабатывает при вводе каждого символа. Хотелось бы после редактирования текста понять, был ли он изменен.


Название: Re: QLineEdit обработка измененного текста
Отправлено: GreatSnake от Июль 14, 2010, 12:43
Цитировать
Для этого использовал метод isModified (), но он всегда возвращает true.
Хм, странно.
Могу посоветовать при установке начального текста дублировать его через setPropery( "init_value", string ) и уже в editingFinished() слоте
проверять текущее значение с начальным
if( text() != property( "init_value" ).toString() )
   ; // modified


Название: Re: QLineEdit обработка измененного текста
Отправлено: kibsoft от Июль 14, 2010, 14:28
isModified возвращает true при любом редактировании, даже если например в едите было: "xxx", юзер стер, а потом снова написал "xxx".
Сбрасывается в false при setText(). Так что выход один - делать как сказал GreatSnake.


Название: Re: QLineEdit обработка измененного текста
Отправлено: trot от Июль 14, 2010, 18:31
Спасибо всем за ваши советы.