Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vol4enok от Июнь 22, 2009, 17:04



Название: перевод окна на передний план
Отправлено: vol4enok от Июнь 22, 2009, 17:04
Здравствуйте
Возникла такая проблема. Приложение работает в полноэкранном режиме и необходимо по нажатию на кнопку мыши перевести другое окно на передний план. Общение с документацией ни к чему не привело =( Не подскажете функцию?


Название: Re: перевод окна на передний план
Отправлено: SABROG от Июнь 23, 2009, 19:11
Нельзя. В Qt события клавы и мыши ловят только окна, которые в фокусе. Глобальных хуков нет.


Название: Re: перевод окна на передний план
Отправлено: Авварон от Июнь 23, 2009, 19:49
в qt extensions (или как там его) есть класс QExGlobalShortcut . Может и для мыши что есть? в любом случае был бы класс полезным если напишешь и выложишь


Название: Re: перевод окна на передний план
Отправлено: spectre71 от Июнь 23, 2009, 19:53
Нельзя. В Qt события клавы и мыши ловят только окна, которые в фокусе. Глобальных хуков нет.
Как это события мыши ловятся только для окон которые в фокусе, ерунда.


Название: Re: перевод окна на передний план
Отправлено: mugabe от Июнь 24, 2009, 04:12
А я так вообще не могу связать между собой вопрос автора и ответы отвечающих :)


Название: Re: перевод окна на передний план
Отправлено: sinj от Июнь 24, 2009, 07:21
Могу предложить несколько другой подход: ты можешь открывать новое модальное окно, т.е. окно которое всегда на переднем плане, и блокирует родительское. Такими качествами обладают диалоговые окна.


Название: Re: перевод окна на передний план
Отправлено: SABROG от Июнь 24, 2009, 09:03
Как это события мыши ловятся только для окон которые в фокусе, ерунда.

Я имел ввиду перекрытых другими окнами, а не неактивных.


Название: Re: перевод окна на передний план
Отправлено: spectre71 от Июнь 24, 2009, 09:13
Как это события мыши ловятся только для окон которые в фокусе, ерунда.
Я имел ввиду перекрытых другими окнами, а не неактивных.

Только если модальными.


Название: Re: перевод окна на передний план
Отправлено: SABROG от Июнь 24, 2009, 11:05
Только если модальными.

Ну сделай 2 окна, разверни их, выбери любое из них и пробуй ловить нажатие мышки и клавиатуры Qtшными способами в том, что находится под текущим окном. Оба окна родительские, чайлдов нет.


Название: Re: перевод окна на передний план
Отправлено: spectre71 от Июнь 24, 2009, 11:17
Ну сделай 2 окна, разверни их, выбери любое из них и пробуй ловить нажатие мышки и клавиатуры Qtшными способами в том, что находится под текущим окном. Оба окна родительские, чайлдов нет.
Про события клавиатуры я не писал!!! Читай внимательней!
Ты писал не про нажатие мыши, а мышиные события!

Опять же я писал "Только если модальными." - мышиные события будут ловиться при перекрытии не модальными окнами.
1) Нажатие мыши будет ловиться поскольку, если сверху нет модального окна, окно куда жмем станет активным!
2) А "Mouse Move" и так ловятся даже при неактивном окне, опять же если, сверху нет модального окна!


Название: Re: перевод окна на передний план
Отправлено: SABROG от Июнь 24, 2009, 11:33
Вот же писал:

Цитировать
В Qt события клавы и мыши ловят только окна, которые в фокусе.

Цитировать
окно куда жмем станет активным!
Хочешь сказать, что если мы нажмем мышкой в область окна, которое перекрывает другое полностью (но не модальное), то перекрытое окно (Z-order) всплывет из глубин и станет активным?


Название: Re: перевод окна на передний план
Отправлено: spectre71 от Июнь 24, 2009, 11:39
Вот же писал:

Цитировать
В Qt события клавы и мыши ловят только окна, которые в фокусе.

Цитировать
окно куда жмем станет активным!
Хочешь сказать, что если мы нажмем мышкой в область окна, которое перекрывает другое полностью (но не модальное), то перекрытое окно (Z-order) всплывет из глубин и станет активным?
А я писал про полные перекрытия, или про то что надо жать или наводить мышь на другое окно?
Или ты считаешь что окно которое поверх другого всегда обязательно и полность его перекрывает!
Твое утверждение было:
Цитировать
В Qt события клавы и мыши ловят только окна, которые в фокусе.
Так вот для событий мыши оно не верно!


Название: Re: перевод окна на передний план
Отправлено: SABROG от Июнь 24, 2009, 12:14
Автору топика: лови mouseReleaseEvent() у своего окна и делай окну activateWindow(). Окно при этом должно быть с флагом Qt::WindowStaysOnTopHint иначе всплывет позади, если оно минимизировано.