crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Virtual Keyboard Tools
QCasper
  опции профиля:
сообщение 28.12.2009, 13:45
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


По работе пришлось столкнуться с необходимостью в виртуальной клавиатуре. Ввиду того, что разрабатываемый софт планируется сделать максимально расширяемым на уровне конфигураций, в том числе это касается и дизайна, этот вопрос коснулся и клавиатуры. Поиск по готовым решениям показал, что все предлагаемые варианты, имеют свой собственный, неповторимый дизайн. Даже небольшое его изменение влечёт правки кода. То же самое касается и фукционала - просто так добавить/удалить кнопку не получится.
Универсальное решение возможно и существует, но в интернете оно в глаза не бросается и скорее всего не бесплатное. Вобщем, так или иначе, я его не нашел и посему попытался решить задачу собственными силами.

В результате получился небольшой набор классов и вспомогательное приложение.
Суть работы сводится к следующему. Для каждой раскладки, которую собирается использовать Ваша клавиатура, необходимо подготовить по два изображения. Первое должно быть обычным изображением клавиатуры, во втором все кнопки должны быть нажаты.
После этого нужно подготовить файлы раскладки. Для этого используется вспомогательное приложение. В нём нужно "обвести" все кнопки вашей клавиатуры, используя подходящие для этого инструменты, коих всего два: прямая линия и линия безье. После каждой такой обводки приложение предлагает задать имя, код и печатаемый текст клавиши.
Теперь, с помощью класса VkbItem, можно работать с виртуальной клавиатурой, которая имеет Ваш собственный дизайн. Вы можете настраивать переключение между раскладками и задавать альтернативное поведение клавиш, то как их "залипание" или "автоподнятие" по нажатию других клавиш.

Я надеюсь этот небольшой инструментарий будет полезен.
Ссылка для загрузки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 28.12.2009, 18:55
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


а для чего эти виртуальные клавиатуры используются?
я просто никогда не сталкивался...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 28.12.2009, 19:25
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(DIMEDROLL @ 28.12.2009, 18:55) *
а для чего эти виртуальные клавиатуры используются?
я просто никогда не сталкивался...


Сейчас с ними по-моему только снежный человек не сталкивался.
Например в платёжном терминале, чтобы набрать номер телефона. Или в том же телефоне с сенсорным управлением, чтобы набрать вообще что-либо, от номера до смски.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 28.12.2009, 23:44
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


а что, прикольно :)
и дока есть, через доксиджен и структура проекта...
только вот пару вопросов:
Почему лицензия GPL а не LGPL?
Почему не сбилдить семпл что бы упростить людям жизнь? :)

Вот я скачал твой проект, а что бы посмотреть уже надо куда то лезть и компилить :huh:
Хорошо, таки начал компилить:
Сделал так как в README, результат
Цитата
D:\Programming\3rdParty\Qt\4.5.2\qt\bin\moc.exe -DUNICODE -DWIN32 -DQT_L
ARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I
"d:\Programming\3rdParty\Qt\4.5.2\qt\include\QtCore" -I"d:\Programming\3rdParty\
Qt\4.5.2\qt\include\QtGui" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\include" -I"..
\..\..\include" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\include\ActiveQt" -I"..\.
.\..\tmp\vkbtools" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\mkspecs\default" -D_MS
C_VER=1400 -DWIN32 graphicsitem.h -o ..\..\..\tmp\vkbtools\moc_graphicsitem.cpp
graphicsitem.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'D:\Programming\3rdParty\Qt\4.5.2\qt\bin\moc.exe' : r
eturn code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\n
make.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.


QTDIR у меня == D:\Programming\3rdParty\Qt\4.5.2_shared
а судя по ошибкам оно ищет в другой папке, наверное по переменной среды PATH... в общем надо разбирать...
минут 30 уже ушло :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.12.2009, 0:07
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(DIMEDROLL @ 29.12.2009, 2:44) *
а судя по ошибкам оно ищет в другой папке
оно, это кто?
если создавать make-файлы с помощью qmake то в нём жёстко пути зашиты к QTDIR.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 29.12.2009, 10:09
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(DIMEDROLL @ 28.12.2009, 23:44) *
Почему лицензия GPL а не LGPL?


А можно я не буду отвечать? :)

Цитата(DIMEDROLL @ 28.12.2009, 23:44) *
Почему не сбилдить семпл что бы упростить людям жизнь? :)


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

Цитата(DIMEDROLL @ 28.12.2009, 23:44) *
Вот я скачал твой проект, а что бы посмотреть уже надо куда то лезть и компилить :huh:
Хорошо, таки начал компилить:
Сделал так как в README, результат
Цитата
D:\Programming\3rdParty\Qt\4.5.2\qt\bin\moc.exe -DUNICODE -DWIN32 -DQT_L
ARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I
"d:\Programming\3rdParty\Qt\4.5.2\qt\include\QtCore" -I"d:\Programming\3rdParty\
Qt\4.5.2\qt\include\QtGui" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\include" -I"..
\..\..\include" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\include\ActiveQt" -I"..\.
.\..\tmp\vkbtools" -I"d:\Programming\3rdParty\Qt\4.5.2\qt\mkspecs\default" -D_MS
C_VER=1400 -DWIN32 graphicsitem.h -o ..\..\..\tmp\vkbtools\moc_graphicsitem.cpp
graphicsitem.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'D:\Programming\3rdParty\Qt\4.5.2\qt\bin\moc.exe' : r
eturn code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\n
make.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.


QTDIR у меня == D:\Programming\3rdParty\Qt\4.5.2_shared
а судя по ошибкам оно ищет в другой папке, наверное по переменной среды PATH... в общем надо разбирать...
минут 30 уже ушло :)


Во-первых с 4.5 оно и не соберётся скорее всего. В VKB Editor используется State Machine. Во-вторых разбиретесь сначала в чехарде своих Qt каталогов. Надо думать, я сначала протестировал сборку несколько раз и на Linux и в Windows, а потом уже выложил.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DIMEDROLL
  опции профиля:
сообщение 29.12.2009, 11:13
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 165
Регистрация: 28.9.2008
Из: Киев
Пользователь №: 304

Спасибо сказали: 23 раз(а)




Репутация:   0  


Цитата
А можно я не буду отвечать? :)

низя :-)
интересно ведь...
Цитата
Во-первых с 4.5 оно и не соберётся скорее всего.

а это где то написано? в РИДМИ или на сайте?
на сайте сказано:
Цитата
Qt 4.x
, я так понимаю что с любой 4-ой версией должно работать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QCasper
  опции профиля:
сообщение 29.12.2009, 11:26
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 26.11.2007
Пользователь №: 24

Спасибо сказали: 2 раз(а)




Репутация:   1  


Цитата(DIMEDROLL @ 29.12.2009, 11:13) *
Цитата
Во-первых с 4.5 оно и не соберётся скорее всего.

а это где то написано? в РИДМИ или на сайте?
на сайте сказано:
Цитата
Qt 4.x
, я так понимаю что с любой 4-ой версией должно работать...


Согласен, это моё упущение. Не то чтобы я не заметил, что нужно указать версию. Просто до сих пор не указал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 22:30