Russian Qt Forum
Июнь 16, 2024, 04:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Экранная клавиатура  (Прочитано 14356 раз)
Poleno
Гость
« Ответ #15 : Июнь 27, 2012, 10:03 »

я клаву пишу для сенсорного экрана
как мне сделать так, чтобы при нажатии на любое место, где можно печатать(будь то строка браузера или блокнот) вылетала клава и печатала там(!) ?

в общем случае никак. Кроссплатформенно - проблем ещё больше. Самый простой вопрос - как ты узнаешь, можно в этом окне печатать или нет? Если делать не универсально, то через глобальные хуки (см. MSDN) отловить нажатие, найти окно под координатами нажатия через кажется ChildWindowFromPoint(), сравнить его classname с "Edit" или аналогичными компонентами, в которых можно печатать текст, и в этих координатах показать виртуальную клавиатуру, которая не крадёт фокус с поля ввода.

Программа, использующая хуки, может определяться антивирусом как троян.


спасибо за инфу, только я под Linux`ом  Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #16 : Июнь 27, 2012, 11:08 »

спасибо за инфу, только я под Linux`ом  Улыбающийся

Никак (во всяком случае я не знаю решения). На уровне X11 нет виджетов.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #17 : Июнь 27, 2012, 12:18 »

Самый простой вопрос - как ты узнаешь, можно в этом окне печатать или нет?
Если полностью своя программа - разработчик ведь знает, в каком окне печатать можно, а в каком нет. QEvent::FocusIn и QEvent::FocusOut отлавливать на виджетах, которые подразумевают ввод каких либо значений и сигнал емитить, по которому клава будет появляться или исчезать.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
mutineer
Гость
« Ответ #18 : Июнь 27, 2012, 12:21 »

Самый простой вопрос - как ты узнаешь, можно в этом окне печатать или нет?
Если полностью своя программа - разработчик ведь знает, в каком окне печатать можно, а в каком нет. QEvent::FocusIn и QEvent::FocusOut отлавливать на виджетах, которые подразумевают ввод каких либо значений и сигнал емитить, по которому клава будет появляться или исчезать.


Если полностью своя программа, то QInputContext
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #19 : Июнь 27, 2012, 13:15 »

Если полностью своя программа - разработчик ведь знает, в каком окне печатать можно, а в каком нет. QEvent::FocusIn и QEvent::FocusOut отлавливать на виджетах, которые подразумевают ввод каких либо значений и сигнал емитить, по которому клава будет появляться или исчезать.

Так со своей-то программой как раз проблем нет, но изначально-то нужно поддерживать любые программы:
Цитировать
будь то строка браузера или блокнот
.
Записан
Poleno
Гость
« Ответ #20 : Июнь 27, 2012, 13:20 »

в смысле "полностью своя программа"?
клавиатура - моя
а вот браузер, например, нет
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #21 : Июнь 27, 2012, 13:50 »

в смысле "полностью своя программа"?
клавиатура - моя
а вот браузер, например, нет
Тогда фиг Грустный
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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