Название: Фокус ввода при переключении приложений Отправлено: Jora от Март 07, 2012, 22:23 Всем привет!
Имеется программа, которая выполняет как бы функцию диспетчера, и запускает другие приложения (3-4) через QProcess. Запускаются приложения в полноэкранном режиме. Причем все время видно только одно приложение. Переключение между ними реализовано через pipe. Таким образом, когда мы переключаемся, одно приложение скрывается (setvisible(false)) другое же, появляется (setvisible(true)). Вот тут и начинаются проблемы. Иногда!! фокус теряется, и запущенное приложение не реагирует на нажатия клавиш. Пробовал вместе с setvisible(true) делать setFocus(); setActivateWindow() (в документации написано что, приложение должно быть в top level однако этого не происходит) пробовал через библиотеку X11 реализовать активацию окна с получением фокуса, однако тоже бесполезно. Примечательно, что иногда фокус срабатывает, а иногда нет. Тестировал на Ubuntu 10.04, 10.10, 11.10 (x86, x64). Везде одна и таже проблема. Версия Qt 4.7.4 Подскажите, что можно здесь сделать? Заранее спасибо Название: Re: Фокус ввода при переключении приложений Отправлено: LisandreL от Март 08, 2012, 00:19 Если запускаемые приложения ваши - попробуйте вслед за setVisible(true) вызывать QWidget::raise и QWidget::activateWindow.
Название: Re: Фокус ввода при переключении приложений Отправлено: Jora от Март 08, 2012, 00:58 Приложения мои. Все команды через pipe лично обрабтываю. Вот что делаю когда хочу показать приложение:
Код: this->setWindowState(Qt::WindowFullScreen); Название: Re: Фокус ввода при переключении приложений Отправлено: mutineer от Март 08, 2012, 01:02 У убунтовского виндоу-менеджера есть определенная особенность - когда пытаешься программно рэйзить окно, которое уже есть на экране, но не на верху стека окон, то оно не рэйзится, а просто мигает в доке/тасбаре/etc
Видел хак этого поведения через установку и тут же сбрасывание флага allwaysOnTop при рэйзе |