Ярлык QAction не всегда работает - PullRequest
10 голосов
/ 17 февраля 2012

У меня есть Qaction для пункта меню для удаления выбранных элементов в одном из моих представлений.Вот как я создаю действие:

deleteAct = new QAction( tr("Delete Selected"), this);
deleteAct->setShortcut(QKeySequence::Delete);
connect(deleteAct, SIGNAL(triggered()), this, SLOT(deleteSelected()));  

Я устанавливаю сочетание клавиш (Delete Key), которое должно вызывать действие delectAct.Он работает большую часть времени, но в некоторые моменты он перестает работать ... Кто-нибудь знает, почему ярлык перестал работать?

Примечание: действие все еще работает, если я запускаю его из пункта меню.Это просто ярлык, который не ...

Ответы [ 4 ]

21 голосов
/ 17 февраля 2012

Вам необходимо добавить действие к виджету, поскольку именно этот виджет будет прослушивать ключевые события.Предполагая, что «this» является главным окном, просто выполните

addAction(deleteAct);

. Обратите внимание, что вы можете добавить одно и то же действие к нескольким виджетам (в этом весь смысл концепции отдельного действия).Поэтому можно добавить его в главное окно и в меню.

6 голосов
/ 17 февраля 2012

Попробуйте изменить контекстный контекст действия, например:

deleteAct->setShortcutContext(Qt::ApplicationShortcut);
0 голосов
/ 02 ноября 2018

Вы можете использовать http://doc.qt.io/qt-5/qaction.html#shortcutVisibleInContextMenu-prop свойство с QT 5.10 для этого:

deleteAct->setShortcutVisibleInContextMenu(true);
0 голосов
/ 17 февраля 2012

Не видя полного кода, я рискнул бы догадаться, что где-то он включается / отключается.Убедитесь, что ярлык получил удар в конструкторе, а не «отключен» где-то еще из-за настройки, возможно.

...