Russian Qt Forum

Qt => Вопросы новичков => Тема начата: White Owl от Июль 13, 2012, 21:51



Название: Расскажите про QValidator?
Отправлено: White Owl от Июль 13, 2012, 21:51
Что-то я не очень понимаю смысл этого класса.
Это просто "умная" маска ввода или QValidator может что-то больше?

У меня сейчас задача: есть список слов. Пользователь должен вводить в текстовое поле только слова из списка, а слова не входящие в список не допускаются.
Как это сделать?
Пока, с чисто визуальной точки зрения, хочется красить красным цветом "плохие" слова и оставлять черным "хорошие", а на выходе из поля ввода убивать все "плохие" слова.
Может ли QValidator мне в этом помочь? Если нет, то как это сделать проще всего?


Название: Re: Расскажите про QValidator?
Отправлено: Странник от Июль 14, 2012, 08:10
может. наследуетесь, переопределяете:
Цитировать
State QValidator::validate ( QString & input, int & pos ) const   [pure virtual]
если в вашем списке слов нет ничего, начинающегося на input, возвращаете QValidator::Invalid. если есть - QValidator::Intermediate. при полном совпадении - QValidator::Acceptable. что не устраивает-то?


Название: Re: Расскажите про QValidator?
Отправлено: andrew.k от Июль 17, 2012, 22:20
Что-то я не очень понимаю смысл этого класса.
Это просто "умная" маска ввода или QValidator может что-то больше?

У меня сейчас задача: есть список слов. Пользователь должен вводить в текстовое поле только слова из списка, а слова не входящие в список не допускаются.
Как это сделать?
Пока, с чисто визуальной точки зрения, хочется красить красным цветом "плохие" слова и оставлять черным "хорошие", а на выходе из поля ввода убивать все "плохие" слова.
Может ли QValidator мне в этом помочь? Если нет, то как это сделать проще всего?

Не издевайся над пользователем, сделай комбобокс.


Название: Re: Расскажите про QValidator?
Отправлено: Странник от Июль 17, 2012, 23:01
Не издевайся над пользователем, сделай комбобокс.
особенно удачное решение, если слов в списке пара тысяч.


Название: Re: Расскажите про QValidator?
Отправлено: andrew.k от Июль 17, 2012, 23:08
Не издевайся над пользователем, сделай комбобокс.
особенно удачное решение, если слов в списке пара тысяч.
Тогда QCompleter
Гораздо удачнее вводить наугад неизвестно что.