Название: Перехват ввода QInputMethodEvent Отправлено: giker от Июнь 25, 2011, 20:01 Нужно перехватывать ввод символов, в QLineEdit. Для этого хочу использовать QInputMethodEvent,но не могу разобраться в какой момент он происходит. В ассистанте написано:
Цитировать Input method events are sent to widgets when an input method is used to enter text into a widget. Когда наследую свой класс от QLineEdit при вводе символов я не попадаю отладчиком в переопределенный inputMethodEvent, EventFilter дает тот же результат. Код:Код: //mylineedit.h Название: Re: Перехват ввода QInputMethodEvent Отправлено: Пантер от Июнь 27, 2011, 09:16 Какая вообще стоит задача и почему не хватает eventFilter?
Название: Re: Перехват ввода QInputMethodEvent Отправлено: giker от Июнь 27, 2011, 13:12 Задача стоит так: не позволять вводить текст в LineEdit/TextPlainEdit если его длинна в байтах привысила определенную длину.
СЕйчас хочу понять когда срабатывает QEventMthod. Можно использовать и eventFilter, но с ним тоже не срабатывает. Название: Re: Перехват ввода QInputMethodEvent Отправлено: kambala от Июнь 27, 2011, 14:11 QLineEdit::setMaxLength(int)? а для QPlainTextEdit можно в слоте, подключённому к сигналу textChanged(), запоминать старый текст и проверять текущее количество символов/байт, и если оно больше заданной величины, то возвращать старый текст.
Название: Re: Перехват ввода QInputMethodEvent Отправлено: giker от Июнь 27, 2011, 14:57 Цитировать QLineEdit::setMaxLength(int)? QLineEdit::setMaxLength(int) - не подходит потому что задает максимальную строки в символах, а не в байтах (латинская буква занимает в юникоде 1 байт, русская - 2, китайский иероглиф - 3).Цитировать а для QPlainTextEdit можно в слоте, подключённому к сигналу textChanged(), запоминать старый текст и проверять текущее количество символов/байт, и если оно больше заданной величины, то возвращать старый текст. Для QPlainTextEdit, уже делается на подобие этого, но хочется общее решение. Поэтому рассматриваю обработку QInputmethodEvent который, вроде бы уже несет в себе всю необходимую мне информацию:Код: const QString & commitString () const |