LINUX.ORG.RU

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

 , ,


0

2

В моем приложении используется самодельный виджет отрисовывающий QPainter ' ом на себе в зависимости от своих параметров, так же на нем можно разместить другие виджеты, зажав ctrl и щелкнув лкм. Программу нужно использовать без оконного менеджера (используя только xinit).
Здесь возникает загвоздка, при запуске приложения на виджет не устанавливается фокус, в следствие чего не ловится keyPressEvent (с оконными менеджерами пробовал, все работает)

Приложение можно отобразить на весь экран ( реализовано средствами Qt - QWidget::showFullScreen() ), в полноэкранном режиме фокус работает всегда, иногда срабатывает полсе старта программы, но чаще нет (зависит от фазы луны). Перепробовал многое, setFocusPolicy и setFocus и пробовал устанавливать фокус средствами XLib, ничего не помогает.
Кто нибудь может подсказать, куда копать?



Последнее исправление: OlegUP (всего исправлений: 3)

Ответ на: комментарий от anonymous

Мое приложение не работает в режиме киоска, оно для тестирования мониторов, полоноэкранный режим нужен, соответсвенно, для тестов. Его можно вернуть в любой момент в нормальную геометрию, и обратно.

OlegUP
() автор топика
Ответ на: комментарий от OlegUP

Управление фокусом ввода - одна из задач оконного менеджера. Если вы хотите обходиться без него, часть функций придётся переложить на свою программу.

Elyas ★★★★★
()
Ответ на: комментарий от Moreo

Пробовал я и XSendEvent и XSetInputFocus, безрезультатно. Провел ltrace для приложения, выяснилось, что завершается с ошибкой методы sizeHintEv и minimumSizeHintEv. если запускать сам xinit с размерами, превышающими начальные размеры виджета, то фокус на окно ставится:

xinit -geometry $WIDTHx$HEIGHT+0+0
но после переключения в полноэкранный режим и обратно фокус опять теряется. Все та же ошибка

OlegUP
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.