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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Источник QAction  (Прочитано 3508 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июль 03, 2014, 16:43 »

Добрый день

Как в слоте (подключенном к QAction с QueuedConnection) определить был ли это выбор из меню или сработал shortcut?

Спасибо
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июль 03, 2014, 16:54 »

Если shortcut назначен через QAction::setShortcut(), то никак.

Но, если через QAction::setShortcutContext( Qt::WidgetShortcut ) сбросить его "глобальность" и создать отдельный QShortcut, то уже можно)
« Последнее редактирование: Июль 03, 2014, 16:58 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июль 03, 2014, 17:14 »

Если shortcut назначен через QAction::setShortcut(), то никак.
Верю

Но, если через QAction::setShortcutContext( Qt::WidgetShortcut ) сбросить его "глобальность" и создать отдельный QShortcut, то уже можно)
Там на Вындоуз не видно др ходов кроме Qt::ApplicationShortcut

Может стоит взять чуть "ширше" - как апдейтить меню? Если добавлять/удалять айтемы - то напрямую, в том месте где случилось. А вот остальное (enabled/disabled, имя изменилось) напрямую получается довольно хлопотно, в приложении (которым я занимаюсь) меню апдейтится "перед тем как вызывается". Отловить момент входа юзверя в меню несложно, но вот что если по клавише hotkey? Сейчас сделано "апдейт всего меню по нажатию Command" - коряво, нужно проверять только нажатый айтем.

Может прорываться через QShortcitEvent ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июль 03, 2014, 17:21 »

При создании QAction shortcut добавляйте для галочки.
Настоящий shortcut создавайте через QShortcut.
Меню обновляйте непосредственно перед его показом.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Июль 03, 2014, 20:38 »

При создании QAction shortcut добавляйте для галочки.
Настоящий shortcut создавайте через QShortcut.
Меню обновляйте непосредственно перед его показом.
Не очень понял. Сделал так: когда получаю QEvent::ShortcutOverride то по клавише нахожу этот action (создал QHash <int, QAction *>) и там уже с ним разбираюсь. Недостаток: на ОSX меню успевает мигнуть/подсветиться  Плачущий
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июль 04, 2014, 08:08 »

Я уже не первый раз наблюдаю как Вы изначально запрашиваете здесь варианты решения одной проблемы,
но в итоге своим каким-то странным путём приходите к какому-то совершенно другому решению.
Или у Вас какие-то проблемы с постановкой или ...

В начале топика была одна проблема. Потом при взятии чуть "ширше" совершенно другая.
После которой мне показалось, что есть сложности в формировании меню.
На что было предложено формировать меню по запросу.
В итоге результат довольно-таки странный.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Июль 04, 2014, 10:18 »

В начале топика была одна проблема. Потом при взятии чуть "ширше" совершенно другая.
Та же самая. Я хочу разбираться с enabled/disabled (айтема меню) в момент срабатывания по клавише или в момент показа. То что сделал вчера - нехорошо, сегодня заклинило в др месте. Обдумаю более тщательно, тогда отпишусь 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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