Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: sergant от Январь 24, 2009, 20:27



Название: экранная клавиатура на Qt
Отправлено: sergant от Январь 24, 2009, 20:27
добрый день!

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

Сейчас это QMainWindow.
уже пробовал
Код:
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
setFocusPolicy(Qt::NoFocus);

окно остается сверху но при щелчке на нем фокус ввода пропадает из пользовательского приложения, при этом мое окно фокус не грабит ..
возможно focusProxy или eventFilter ?? если да то для какого виджета ставить focusProxy.

также есть вариант задать такой вариант напрямую через Carbon - kWindowNoActivatesAttribute. но это не помогло(

возможно ли потом посредством Qt отправлять выбранные символы в приложения с пользовательским фокусом


Заранее спасибо!




Название: Re: экранная клавиатура на Qt
Отправлено: SABROG от Январь 27, 2009, 18:30
Qt не имеет средств для манипуляции чужими окнами. installEventFilter не поможет. Он не перехватывает события чужих приложений. Выкрутится можно только системными API. Но тут без каких-нибудь аналогов установки hook'a и sendkey не обойтись. Возможно придется как-то запоминать последнее окно которое имело фокус прежде чем была нажата клавиша на виртуальной клавиатуре.


Название: Re: экранная клавиатура на Qt
Отправлено: sergant от Январь 27, 2009, 21:50
дааа... уже смотрю в доки по EventHandler-ам
спасибо!