Название: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: faithman от Февраля 15, 2009, 16:10 ПО: Qt 4.4.3 под Win Vista 64bit
Создаю тулбар с 4-мя QToolButton (на них только иконки) с подключенными QMenu к ним. Мне нужно отловить сигналы фокуса мыши на кнопке,без клика на неё,и если он есть раскрыть QMenu этой кнопки,а дальше если кликнуть в не QMenu этой кнопки выловить этот фокус и закрыть это QMenu и выставить QToolButton по дефолту (не нажатая). Кто знает где эти сигналы взять ,или как реализовать их через QEvent ? Если есть пример конкретный или кусок кода буду рад и этому. Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: ритт от Февраля 15, 2009, 17:25 "фокус мыши" - это что? Hover?
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: faithman от Февраля 15, 2009, 18:30 Уточнение: вот мы указателем мыши встали на кнопку,она тут же выделилась (без клика) - этот сигнал нужен,искал от AbstractButton и Widget
таких сигналов или слотов нет,только фокус от клавиатуры. QEvent::HoverEnter 127 Указатель мыши входит в область перемещения виджета (QHoverEvent). QEvent::HoverLeave 128 Указатель мыши покидает область перемещения виджета (QHoverEvent). Вот эти вещи может быть пригодились .Наверно нужно унаследовать QToolButton и добавить сигнал от таких событий ,если это то что нужно мне ? Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: ритт от Февраля 15, 2009, 19:24 installEventFilter - и наследоваться не нужно. сигналы тоже не нужны.
вообще не пойму суть задачи - раскрыть меню, ассоциированное с кнопкой, showMenu(). скрытие меню и так происходит при потере кнопкой фокуса. Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: faithman от Февраля 15, 2009, 19:58 installEventFilter - и наследоваться не нужно. сигналы тоже не нужны. вообще не пойму суть задачи - раскрыть меню, ассоциированное с кнопкой, showMenu(). скрытие меню и так происходит при потере кнопкой фокуса. Вот мой тулбар,для смены меню при переходе с одной на другую кнопку нужно 2-а клика мыши.Первый "происходит при потере кнопкой фокуса",а второй при нажатии на соседнюю кнопку,чтобы увидеть ей меню.Мне нужно показывать меню кнопок быстрым листанием как это есть у QMenuBar. .h Код
.cpp Код
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: pastor от Февраля 17, 2009, 12:59 Как уже сказал Константин, установи фильтр событий (installEventFilter) для QToolButton'ов
Код
Далее объяви Код
и определи метод: Код
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: ритт от Февраля 17, 2009, 13:09 /* а Константин тем временем сомневается, что это будет работать...но проверять ленится */
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: pastor от Февраля 17, 2009, 13:22 Че ж так? :)
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: ритт от Февраля 17, 2009, 16:52 /* а тему кто-то перенёс или она в новичках и была? */
повторюсь - я специально не проверял...но тревожат меня смутные воспоминания будто бы я когда-то где-то удивлялся странностям ивентов при выпавшем меню...вот как-то так вот всё неясно :) вероятно, чуть попозжа я всё-таки пересилю этот приступ лени после ??нутого рабочего дня и набросаю тестовое приложение...но не факт :) а пять минут назад заметил, что в снапшоте 4.5 длина клика для контекстных меню сократилась - теперь меню закрывается и открывается в новой позиции с первого клика. причём, этот же клик активирует виджет под курсором, что решает вопрос о контекстном меню в таблвью, поднятый мной с пол-года назад и оставшийся тогда без решения :) и в дополнение к этому приятному открытию обнаружил также, что менюшки теперь выглядят симпатишнее (нет лишних отступов от иконок и т.п.), а комбобоксы теперь лучше мимикрируют под нативные - так же анимируют попап при активации, например... да и вообще виджеты стали заметно быстрее реагировать на события...или это сказывается тот факт, что собирался снапшот под гцц4.3.2? :) Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: pastor от Февраля 17, 2009, 17:35 /* тема здесь и была */
Мне кажется с event filter должно работать, покрайней мере в теории так :) Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: crackedmind от Февраля 19, 2009, 19:12 А перегрузка функций leaveEvent & enterEvent для виджетов не подойдет?
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: pastor от Февраля 19, 2009, 19:20 А перегрузка функций leaveEvent & enterEvent для виджетов не подойдет? Чтобы перегрузить - нужно наследоваться. EventFilter исбпвляет от наследования Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: crackedmind от Февраля 20, 2009, 09:24 По мне так лучше наследоваться, чем к каждой кнопке фильтр приделывать.
Название: Re: Как отловить фокус мыши на QToolButton и выход фокуса из QMenu? Отправлено: pastor от Февраля 20, 2009, 12:51 Зачем к каждой? Фильтр будет один для всех
|