Qt добавление не-Menubar сочетаний клавиш в QMainWindow

У меня есть собственный виджет, который расширяет QMainWindow, Там я добавляю ряд QActions в строке меню вместе с сочетаниями клавиш для каждого, и они работают нормально. Теперь я хочу удалить некоторые из этих действий из строки меню, но я хочу оставить ярлыки включенными (пользователь может узнать о доступности ярлыков из Помогите диалог). Поэтому сначала я решил, что сделаю действия невидимыми.

Это не сработало, поэтому я думаю, что действие не может быть невидимым, если ярлыки должны работать. Поэтому я добавил его в главное окно, но они все еще не работают. Есть идеи, как мне заставить это работать? Вот мой код Все, что должно произойти, есть в методе. someMethod,

class MyWidget: public QMainWindow {
public:
MyWidget();

};

MyWidget::MyWidget() {
QAction *myAct = new QAction(tr("&Some Text"), this);
fNextmyActPageAct->setShortcut(QKeySequence(Qt::Key_Right));
myAct->setVisible(false); //adding this does not work
connect(myAct, SIGNAL(triggered()), this, SLOT(someMethod()));

...

QMenu *someMenu = menuBar()->addMenu(tr("&Some Menu"));
someMenu->addAction(myAct); //this works, the option shows up in the menu 'Some Menu' and the shortcut works
this->addAction(myAct); //does not work

}

2

Решение

Я проверил этот код, и он работает нормально:

QAction* myAct = new QAction(this);
myAct->setShortcut(Qt::Key_Right);
connect(myAct, SIGNAL(triggered()), this, SLOT(someMethod()));
this->addAction(myAct);

Не добавлять QAction в вашем меню Bar.

4

Другие решения

Ты можешь использовать QShortcut и передать ключ, целевой виджет и соответствующий слот в качестве параметров его конструктору. Просто поместите это в конструктор MyWidget :

QShortcut * shortcut = new QShortcut(QKeySequence(Qt::Key_Right),this,SLOT(someMethod()));
shortcut->setAutoRepeat(false);
0

По вопросам рекламы [email protected]