Russian Qt Forum
Октябрь 01, 2024, 00:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как подсунуть русскую букву в QLineEdit?  (Прочитано 9049 раз)
lisarden
Гость
« : Апрель 04, 2011, 10:02 »

есть ARM9 девайс с файловой системой busybox. Поддержки русского ввода нет, но Qt само по себе русский текст нормально отображает.

Задача: при нажатии кнопок в латинской (она же единственная) раскладке в QLineEdit отображать русские буквы.
Как это сделать? На ум приходят варианты:
1) в eventFilter на QLineEdit перехватывать нажатия кнопок и руками делать setText/insert
2) перехватывать нажатия кнопок там же, подменять keymaps(?)

в общем, что проще и более подходит под данную задачу?
Записан
Fat-Zer
Гость
« Ответ #1 : Апрель 04, 2011, 10:15 »

1) Busybox - это не файловая система
2) похоже вариант с перехватом событий топорный, но единственный...
Записан
Fess
Гость
« Ответ #2 : Апрель 04, 2011, 10:20 »

Mожет быть лучше перехватывать события QKeyEvent в фильтре на уровне QApplication?
Будет универсальнее..
Скажем, игнорировать пришедшее, декодировать и отправлять новое событие с правильным содержанием.
QKeyEvent::QKeyEvent ( Type type, int key, Qt::KeyboardModifiers modifiers, const QString & text = QString(), bool autorep = false, ushort count = 1 )

..and the given text is the Unicode text that the key generated.
Записан
lisarden
Гость
« Ответ #3 : Апрель 04, 2011, 11:49 »

Спасибо за совет!

Попробовал сделать так:
Код:
qApp->sendEvent(qApp->focusWidget()
        , new QKeyEvent(QEvent::KeyPress, Qt::Key_1
        , Qt::NoModifier, "-"
        , false, 1));
.. работает, но не понятно назначение Qt::Key_1, т.к. напиши здесь хоть что, всё равно будет текст в кавычках подсовывать.
Записан
Fess
Гость
« Ответ #4 : Апрель 04, 2011, 12:03 »

Цитировать
Int key is the code for the Qt::Key that the event loop should listen for. If key is 0, the event is not a result of a known key; for example, it may be the result of a compose sequence or keyboard macro.
Видимо, это влияет на фильтрацию события в цикле их обработки..
В вашем случае лучше посылать то, что и пришло: int QKeyEvent::key () const
Записан
lisarden
Гость
« Ответ #5 : Апрель 05, 2011, 11:07 »

выяснил, что передача той же кнопки приводит к segmentation fault. Пока передаю key=0 и так работает.
Записан
ритт
Гость
« Ответ #6 : Апрель 05, 2011, 18:16 »

а мб не изобретать велосипеды, а почитаь документацию по qws? Улыбающийся
Записан
lisarden
Гость
« Ответ #7 : Апрель 05, 2011, 22:03 »

а мб не изобретать велосипеды, а почитаь документацию по qws? Улыбающийся
я читаю, но выборочно Улыбающийся.надо мной заказчик стоит и особо вчитываться времени нет..
Может, ткнете носом в доку? Подмигивающий
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Апрель 05, 2011, 22:36 »

тыкаю Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lisarden
Гость
« Ответ #9 : Апрель 05, 2011, 22:41 »

ну, этот ресурс у меня не закрывается с утра до ночи..
Записан
ритт
Гость
« Ответ #10 : Апрель 05, 2011, 23:11 »

ну, этот ресурс у меня не закрывается с утра до ночи..
ещё бы его кто-нибудь читал...

http://doc.qt.nokia.com/4.7/qt-embedded-charinput.html#keymaps
Записан
ритт
Гость
« Ответ #11 : Апрель 06, 2011, 00:13 »

бтв, всегда скептически относился к отмазкам вида "проект горит/заказчик плетьми лупит - читать доки некогда"...
неужели велосипедостроить и/или ждать ответа на форуме по нескольку дней - быстрее, чем даже скрупулёзно изучить доки? к примеру, у меня поиск материала по ссылке выше занял около минуты...
Записан
lisarden
Гость
« Ответ #12 : Апрель 06, 2011, 06:50 »


http://doc.qt.nokia.com/4.7/qt-embedded-charinput.html#keymaps
[/quote]
читал и даже начал немного в эту сторону копать, но был сбит с толку Улыбающийся

тогда, уважаемый Гуру, эти keymaps помогут реализовать клавиатуру телефона, у которого только цифровая клава есть и надо жать по 5 раз на "4", чтобы плучить "#" или "щ"? Мне кажется эти keymaps нужны, чтобы тупо транслировать O->Щ и L->Д. Я не прав?
Записан
ритт
Гость
« Ответ #13 : Апрель 06, 2011, 14:52 »

не нужно ёрничать...

про "надо жать по 5 раз на "4", чтобы плучить "#" или "щ"" в данном треде встречается впервые и, видимо, до сих пор была угадайка.
если стандартный linux input кбд драйвер поддерживает такой тип набора (и если я правильно помню), то всё в порядке, т.к. кеймапы обрабатываются в последнюю очередь (непосредственно перед отправкой события qws-серверу). а вот поддерживается ли многоуровневый маппинг? - этого я уже не помню вовсе...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 23.