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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема прохождения событий нажатия кнопок мыши (event'ов) в виджетах  (Прочитано 2241 раз)
Янковский Александр
Гость
« : Ноябрь 28, 2013, 11:31 »

Проблема в следующем.
Приложение функционирует под управлением ОС openSUSE 12.3 в окружении KDE. ЭВМ содержит в своем составе 2 монитора.
Приложение имеет в своем багаже 2 QWidget'а. Каждый из виджетов разворачивается на своем мониторе и имеет в качестве родителя виджет, полученный посредством вызова метода QApplication::desktop()->screen( индекс_экрана ).
Суть проблемы заключается в следующем.
1) Виджеты создаются по очереди и вписаны в соответствующие экраны
2) После окончания создания виджетов и их отображения в первом созданном виджете невозможно управление мышью и клавиатурой! Во втором виджете все функционирует штатно. При этом установлено, что первому виджету не поступают события, связанные с нажатиями клавиш мыши и клавиатуры.
3) После закрытии второго виджета в первый начинают корректно поступать события, связанные с нажатиями клавиш мыши и клавиатуры.

Собственно вопрос в том, сталкивался ли кто-нибудь с подобной ситуацией в своем опыте?
Записан
alexeev
Гость
« Ответ #1 : Ноябрь 28, 2013, 12:26 »

Возможно события получает, только то окно которое активно, второе создатеся после первого, поэтому оно и активно, но это относится только к клавиатуре, а насчет мыши непонятно
Записан
Янковский Александр
Гость
« Ответ #2 : Ноябрь 28, 2013, 15:13 »

Проблема решена.

Методом дедукции обнаружил, что во время отработки слота show() второго виджета для первого приходит событие QEvent::WindowBlocked, что по сути означает блокировку другим модальным окном приложения.
Нигде в коде я модальностью окон не "игрался". НО QtDesigner за меня сам произвел логичные для него действия, а именно внутри ui-файла выставил для каждого из описаний виджетов свойство windowModality равным Qt::ApplicationModal!

Вот собственно теперь и понятна логика работы. Оба виджета модальные и второй открывшийся по сути запрещает ввод с мыши и клавиатуры для первого... естественно до момента своего уничтожения.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Ноябрь 29, 2013, 11:34 »

первая мысль была именно такая Улыбающийся, сам с подобным сталкивался
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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