crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Фокус ввода на виджете?
wiz29
  опции профиля:
сообщение 5.10.2010, 12:50
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Добрый день.
Подскажите как сделать. Нужна следующая функциональность виджета: show->открывается поверх всех дочерних окон главного окна, при клике мышкой вне этого виджета нужно его скрыть (т.е. сделать его invisible). как лучше сделать?(через фокус евент не прокатывает)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.10.2010, 13:00
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


це QMenu

или даже любой QWidget с отслеживанием leaveEvent . Если курсор не на фиджете и фокуса нет (проверять по таймеру, к примеру), то скрываем


хм, даже leaveEvent не надо - таймера достаточно

Сообщение отредактировал Алексей1153 - 5.10.2010, 13:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 5.10.2010, 13:02
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Не QMenu мне не подходит, тк при кликах вне элементов виджета меню он скрывается.
Естьли какойто евент который грубо говоря генерится при изменении позиции виджета в стеке виджетов?


leaveEvent не подойдет, мне нужно скрывать именно при клике вне виджета. Если клика нет скрывать не нужно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.10.2010, 13:03
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


wiz29, я подправил пост. Там ещё нужно добавить проверку - что главное окно не в фокусе + виджет не в фокусе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 5.10.2010, 13:06
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


не совсем уловил мысль, зачем таймер?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.10.2010, 13:51
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


по таймеру при зажжённом виджете проверять, где сейчас находится курсор. Раз в полсекунды будет достаточно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 6.10.2010, 9:20
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Мне бы хотелось скрывать по клику "мимо" виджета. Мне не понятно по чему при вызове show() виджет появляется, но фокуса на нем нет, даже если он applicationModal

Тем более таймер, как мне кажется, не оч удачная идея, если виджет может быть скрыт / открыт несколькими способами
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 6.10.2010, 9:39
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


эхъ, в общем без экспериментов трудно что-то говорить, а провести их сейчас немного некогда...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 6.10.2010, 9:40
Сообщение #9


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


я щас и эксперементирую, как решу отпишусь:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 6.10.2010, 10:47
Сообщение #10


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


нашел решение, обрабатывая QEvent::WindowDeactivate получается нужный эффект.
Кликая мышью "мимо" виджета как раз и приходит данное событие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 10:51