2010-02-03 1 views
1

Следующая существующая функция должна быть реализована в нашем существующем приложении C++ & C++. Мы должны расширить введенные пользователем аббревиатуры в заранее определенные слова (и). Функциональность, которую нам нужно реализовать, похожа на текстовый расширитель. Скажем, если пользователь набрал «FL», это необходимо немедленно заменить на «Флорида».Как изменить ввод клавиатуры в QT?

Я смог узнать документацию QT для захвата ключевых событий, но я не уверен, как изменить ввод с заранее заданными наборами символов.

Было бы здорово, если бы вы, ребята, предоставили мне пример кода и указаний по этому вопросу.

Заранее благодарен!

ответ

0

Этот пример может быть вам полезен?

Они используют под названием завершившим Механизм, который обеспечивает, различные слова для данной записи ... Это совсем как dictionnary на мобильный телефон ...

Пользовательские Completer Пример:

http://qt.nokia.com/doc/4.6/tools-customcompleter.html

Надеюсь, это поможет!

+0

Спасибо Энди за вашу ссылку. Я просто хочу полностью заменить предварительно определенные слова аббревиатурой, введенной пользователем. Мне не нужен выпадающий список и все. Скажем, я могу использовать специальный ключ, чтобы сообщить моему приложению, что это аббревиатура, и искать заранее определенные слова, если они совпадают. Например, если пользователь нажал клавишу «fl» и пробел, приложение должно заменить заранее определенные слова над «fl». – Thi

+0

Эй, да, но, зная, что вы можете совместить «fl» с «Florida», вы можете изменить поведение примера, чтобы реагировать на пробел, и сразу добавить слово ... –

+0

Эй, вы нашли решение к вашей проблеме? Как ты это сделал ? –

1

Зачем вам нужно модифицировать «ввод с клавиатуры»? Пусть пользователь вводит и после каждого символа проверяет совпадения с вашей БД аббревиатур. Как только вы нажмете что-нибудь, удалите аббревиатуру, которую пользователь набрал, и замените ее расширением.

Учитывая, что пользователь вводит какое-либо текстовое поле, это очень простые операции, которые даже не должны воздействовать на события, а просто на сигналы, посылаемые этими виджетами при вводе новых символов.

+0

Я хотел сказать, чтобы заменить введенные пользователем символы на заранее определенные слова. На самом деле это не текстовое поле, это своего рода форма, такая как IDE для редактора кода. – Thi

+0

Значит, вы не хотите показывать, что пользователь ввел? Я думаю, вы должны - иначе, что вы покажете, если он не набрал ни одного из сокращений? В любом случае, чтобы скрыть его ввод, вы можете поймать ключевое событие и не передавать его, а затем делать то, что вы с данными –

+0

Не будет никаких правил по числу сокращений, они могут определять любые заранее определенные тексты с помощью аббревиатура. Это зависит от пользовательского решения, либо они могут использовать аббревиатурный тег для расширения, либо просто ввести его. Возможно ли это в QT? – Thi