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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: shortCut  (Прочитано 4354 раз)
¤Se®ega¤
Гость
« : Март 12, 2009, 16:32 »

Помогите с быстрыми клавишами.На виджете есть 2 менюшки (одна в MenuBar,другая контекстная).В обоих заданы shortcutы но почему-то работают только те, что связаны с MenuBar.Как мне сделать чтобы при нажатии "быстрых клавиш" из контекстного меню происходили действия? Непонимающий
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #1 : Март 12, 2009, 17:51 »

Да, действительно.

Если я правильно понимаю, ты делаешь контекстное меню через Action. То есть, вначале создаешь пункты меню в виде объектов QAction (пусть они даже создаются в конструкторе твоего виджета), а затем в методе типа on_customContextMenuRequested() из этих Action ты конструируешь меню (как это сделано в примерах), примерно так

Код
C++ (Qt)
void mywidget::on_customContextMenuRequested(const QPoint &pos)
{
 // Конструирование меню
 QMenu menu(this);
 menu.addAction(action_1);
 menu.addAction(action_2);
 menu.addAction(action_3);
 
 // Включение отображения меню на экране
 menu.exec(recordview->viewport()->mapToGlobal(pos));
}

И несмотря на то, что Action описаны в конструкторе виджета, и им назначены шорткаты, шорткаты эти не работают. Это происходит видимо потому, что Action существуют в виджете просто как объекты, но объекты эти никуда не вставлены (т.к. addAction() вызывается только при открытии контекстного меню).


Но я попробовал сделать контекстное меню сразу в конструкторе, то есть оно в виджете существует все время, только скрыто. Получается, что Action уже вставлены в меню, но это тоже не помогает. Тут видимо уже играет роль то, что меню скрыто, а для скрытого меню шорткаты недоступны.


Дальше мои мысли кончаются, и я тоже хочу узнать у гуру, можно ли вызывать шорткаты для Action, которые принадлежат контекстному меню.
Записан

Собираю информацию по крупицам
http://webhamster.ru
¤Se®ega¤
Гость
« Ответ #2 : Март 12, 2009, 18:06 »

Да, именно так все у меня и устроено.Думаю на крайний случай можно создать в menuBare еще одно меню, сделать его невидимым и его вызывать привязать к конекстному(не пробовал, но думаю возможно).Заморорчено конечно, хотелось бы попроще. В замешательстве
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Март 12, 2009, 18:08 »

this->addAction(QAction*)
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #4 : Март 12, 2009, 18:14 »

this->addAction(QAction*)

То есть, решение в том, что одну и ту же Action надо вставить и в контекстное меню, и назначить всему виджету?
Записан

Собираю информацию по крупицам
http://webhamster.ru
¤Se®ega¤
Гость
« Ответ #5 : Март 12, 2009, 18:19 »

Спасибо.Заработало  Веселый.Хотелось бы еще знать почему такое происходит.
« Последнее редактирование: Март 12, 2009, 18:23 от ¤Se®ega¤ » Записан
¤Se®ega¤
Гость
« Ответ #6 : Март 12, 2009, 18:25 »

ну получается что у вджета есть Действия, из которых мы делаем контекстное меню, и при нажатии "быстрых клавиш" срабатывают действия виджета.я так понимаю.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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