Фокус ввода на виджете? |
Здравствуйте, гость ( Вход | Регистрация )
Фокус ввода на виджете? |
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 получается нужный эффект.
Кликая мышью "мимо" виджета как раз и приходит данное событие. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 10:51 |