QEvent::KeyPress и UNICODE, (сканер штрихкода) |
Здравствуйте, гость ( Вход | Регистрация )
QEvent::KeyPress и UNICODE, (сканер штрихкода) |
512es |
24.11.2009, 22:41
Сообщение
#1
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Доброго времени суток!
Есть такая проблема. Пытаюсь перехватить символы юникода, которые вводятся с клавиатуры. Делаю это вот так:
Проблема в том, что моя программа, видимо вообще не поддерживает ввод юникода с клавиатуры. При этом на виджетах появляются артефакты. И поведение вообще не предсказуемое. Может кто уже сталкивался с такой проблемой? |
|
|
Elfinit |
24.11.2009, 23:30
Сообщение
#2
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Чем отличается обычный ввод от ввода символов юникода? В приведённом примере как раз попыка ловить обычный KeyPressEvent? Где связь с юникодом? Уточни задачу....
|
|
|
512es |
24.11.2009, 23:57
Сообщение
#3
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Чем отличается обычный ввод от ввода символов юникода? В приведённом примере как раз попыка ловить обычный KeyPressEvent? Где связь с юникодом? Уточни задачу.... Как бы так объяснить.. Когда символы ввожу в любую другую программу, например тот же notepad.exe, отображаются они нормально. А когда в любое текстовое поле своей программы на qt, то отображаются не верно. Я перехватываю жуткие коды символов. keyEvent->key() выдаёт значения 16777251, 16777235, 16777238 и т.д. А keyEvent->text() вообще порой ничего не выдаёт. Как их перевести в нормальную читабельную строку? |
|
|
grio |
25.11.2009, 3:02
Сообщение
#4
|
Студент Группа: Участник Сообщений: 87 Регистрация: 11.11.2009 Пользователь №: 1221 Спасибо сказали: 6 раз(а) Репутация: 0 |
Ты используешь сканнер с интерфейсом KBW?
Если читать символы в стандартный lineEdit тогда пролем с отображением нет? |
|
|
Litkevich Yuriy |
25.11.2009, 9:49
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
512es, не заглядывая внутрь программы, как ты вводишь эти символы?
|
|
|
kwisp |
25.11.2009, 10:12
Сообщение
#6
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
[/quote]
как ты вводишь эти символы? так и выводит keyEvent->key() выдаёт значения 16777251, дело в том что это коды qtшные и на сколько я знаю функция text() жутко глючила до версии 4.5.2. вопрос в другом зачем перехватывать символ а потом его "вставлять"? с помощью фильтра событий ты можешь просто пропустить его(символ) дальше и он сам вставится. Как их перевести в нормальную читабельную строку? может если покрутить всякие там QTextCodec всё получится без перевода key() в QString() ? |
|
|
Litkevich Yuriy |
25.11.2009, 10:19
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я имею в виду как их не он, а пользователь вводит. Что он нажимает?
|
|
|
512es |
25.11.2009, 11:57
Сообщение
#8
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
Ты используешь сканнер с интерфейсом KBW? Я имею в виду как их не он, а пользователь вводит. Что он нажимает? Пользователь берёт сканер штрихкода и сканирует штрихкод. Сам сканер подключён по юсб и видится в системе как HID клавиатура. С этой виртуальной клавиатуры вводятся данные. Сканер может работать в двух режимах: обычная латиница и юникод. Минус в использовании латиницы в том, что если переключить раскладку клавиатуры на русскую и просканировать штрихкод, то набран он будет русскими буквами. А минус юникода в том, что как то странно набирает сканер буквы.. В остальных программах набирает правильно, а в любой qt программе, не так как надо. Есть у меня идея, что сканер набирает юникод сочетанием разных кнопок на клаве.. Например клавиша 16777251, которую я часто получаю при сканировании это QtKey_Alt.. Если читать символы в стандартный lineEdit тогда пролем с отображением нет? Есть. Строка получается другая. Даже если в любой lineEdit QT Creator'а ввести. Циферные штрихкоды конечно работают нормально, а вот цифро-буквенные не очень.. вопрос в другом зачем перехватывать символ а потом его "вставлять"? с помощью фильтра событий ты можешь просто пропустить его(символ) дальше и он сам вставится. Просто задумка была такая, чтобы читать штрихкод не зависимо от того, в каком виджете сейчас фокус. Поэтому я его перехватываю, после проверки на определённый префикс читаю сам штрихкод и т.д. Или же, как вариант, подскажите как переводить символы, введёные в раскладке, отличной от английской, как будто они были введены в английской раскладке. А-ля пунто. keyEvent->nativeVirtualKey() и keyEvent->nativeScanCode() выдают не правильные символы. |
|
|
kwisp |
25.11.2009, 12:06
Сообщение
#9
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
я всё равно ничего не понял.
хочешь сказать что чудо клавиотура в любую программу правильно вставляет символы в Qt прогу не правильно? |
|
|
512es |
25.11.2009, 12:07
Сообщение
#10
|
Участник Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 11:11 |