Russian Qt Forum
Ноябрь 27, 2024, 01:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: перевод окна на передний план  (Прочитано 8345 раз)
vol4enok
Гость
« : Июнь 22, 2009, 17:04 »

Здравствуйте
Возникла такая проблема. Приложение работает в полноэкранном режиме и необходимо по нажатию на кнопку мыши перевести другое окно на передний план. Общение с документацией ни к чему не привело =( Не подскажете функцию?
Записан
SABROG
Гость
« Ответ #1 : Июнь 23, 2009, 19:11 »

Нельзя. В Qt события клавы и мыши ловят только окна, которые в фокусе. Глобальных хуков нет.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Июнь 23, 2009, 19:49 »

в qt extensions (или как там его) есть класс QExGlobalShortcut . Может и для мыши что есть? в любом случае был бы класс полезным если напишешь и выложишь
Записан
spectre71
Гость
« Ответ #3 : Июнь 23, 2009, 19:53 »

Нельзя. В Qt события клавы и мыши ловят только окна, которые в фокусе. Глобальных хуков нет.
Как это события мыши ловятся только для окон которые в фокусе, ерунда.
Записан
mugabe
Гость
« Ответ #4 : Июнь 24, 2009, 04:12 »

А я так вообще не могу связать между собой вопрос автора и ответы отвечающих Улыбающийся
Записан
sinj
Гость
« Ответ #5 : Июнь 24, 2009, 07:21 »

Могу предложить несколько другой подход: ты можешь открывать новое модальное окно, т.е. окно которое всегда на переднем плане, и блокирует родительское. Такими качествами обладают диалоговые окна.
« Последнее редактирование: Июнь 24, 2009, 07:23 от sinj » Записан
SABROG
Гость
« Ответ #6 : Июнь 24, 2009, 09:03 »

Как это события мыши ловятся только для окон которые в фокусе, ерунда.

Я имел ввиду перекрытых другими окнами, а не неактивных.
Записан
spectre71
Гость
« Ответ #7 : Июнь 24, 2009, 09:13 »

Как это события мыши ловятся только для окон которые в фокусе, ерунда.
Я имел ввиду перекрытых другими окнами, а не неактивных.

Только если модальными.
Записан
SABROG
Гость
« Ответ #8 : Июнь 24, 2009, 11:05 »

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

Ну сделай 2 окна, разверни их, выбери любое из них и пробуй ловить нажатие мышки и клавиатуры Qtшными способами в том, что находится под текущим окном. Оба окна родительские, чайлдов нет.
Записан
spectre71
Гость
« Ответ #9 : Июнь 24, 2009, 11:17 »

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

Опять же я писал "Только если модальными." - мышиные события будут ловиться при перекрытии не модальными окнами.
1) Нажатие мыши будет ловиться поскольку, если сверху нет модального окна, окно куда жмем станет активным!
2) А "Mouse Move" и так ловятся даже при неактивном окне, опять же если, сверху нет модального окна!
Записан
SABROG
Гость
« Ответ #10 : Июнь 24, 2009, 11:33 »

Вот же писал:

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

Цитировать
окно куда жмем станет активным!
Хочешь сказать, что если мы нажмем мышкой в область окна, которое перекрывает другое полностью (но не модальное), то перекрытое окно (Z-order) всплывет из глубин и станет активным?
Записан
spectre71
Гость
« Ответ #11 : Июнь 24, 2009, 11:39 »

Вот же писал:

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

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

Автору топика: лови mouseReleaseEvent() у своего окна и делай окну activateWindow(). Окно при этом должно быть с флагом Qt::WindowStaysOnTopHint иначе всплывет позади, если оно минимизировано.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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