Название: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: gtrasder от Октябрь 16, 2014, 09:05 День добрый.
Конечная цель - получить сигнал, что в QLineEdit была попытка ввода запрещенного символа. Самым обычным способом прицеплял QRegExpValidator: Код: QRegExp re("[^(A-Za-z)]"); // например, просто запрещение английских символов Все работает, все отлично. Но как отследить ? Сигналов срабатывания у RegExp или у RegExpValidator я не нашел. Сигнал textChanged у лайнэдита, соотвественно, не срабатывает, раз символ не появился. Пробовал через keyPressEvent: Код: void MainWindow::keyPressEvent(QKeyEvent *event) В итоге, смог добиться результата только с помощью голого QRegExp: Код: QRegExp re("[^(A-Za-z)]"); Но мне кажется, это слишком сложно и должен быть более простой и логичный способ, чем проверять добавление посимвольно. Название: Re: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: Johnik от Октябрь 16, 2014, 09:28 Конечная цель - получить сигнал, что в QLineEdit была попытка ввода запрещенного символа. На конкретный символ вряд ли получится, если только написать свой валидатор.А вообще, можно при срабатывании сигнала textChanged смотреть свойство bool hasAcceptableInput() const. А также обратить внимание на: Код
Название: Re: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: gtrasder от Октябрь 16, 2014, 12:49 Да, после окончания редактирования отследить что-то можно без проблем.
А проблема в том, что если валидатор применен, в нужных мне случаях textChanged как раз не будет триггериться. Все равно спасибо. Название: Re: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: Johnik от Октябрь 16, 2014, 14:15 Тогда один вариант, написать свой валидатор, а в нем реализовать нужные сигналы.
Название: Re: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: Igors от Октябрь 16, 2014, 14:35 А по-народному перекрыть keyEvent или навесить фильтрок?
Название: Re: Отслеживание срабатывания QRegExpValidator в QLineEdit Отправлено: gtrasder от Октябрь 16, 2014, 16:45 Да по-народному я вон уже наверху решение придумал =)
Решил все-таки сделать свой валидатор. Вот готовая версия (за название класса извиняюсь сразу): Код
Код
|