使用QKeyEvent键盘按下事件来设定快捷键,虽然很方便,但也有不舒服的情况,比如主窗口中包含多个小窗口,聚焦到小窗口时,主窗口的按下事件就不响应了,因此需要不受窗口限制的全局快捷键设定方式
QAction和QPushButton都有setShortcut ()接口,可以用来设定快捷键
代码分析
QMenuBar * menubar = new QMenuBar(this);//创建菜单栏
QMenu *menu_test;
menu_test = new QMenu("menu11");//创建菜单
QAction * action_1;
action_1 = new QAction("act1",this);//创建动作
menu_test->addAction(action_1);
connect(action_1 , SIGNAL(triggered()) , this , SLOT(textset()));//关联槽函数
action_1->setShortcut(tr("Ctrl+1"));//设定快捷键
action_1->setShortcut(0);//如果写了这句就可以取消快捷键
menubar->addMenu(menu_test);
setShortcut的内容有多种设置方法:
setShortcut(Qt::CTRL + Qt::Key_B);
setShortcut(tr("Ctrl+1"));
setShortcut(QKeySequence("Ctrl+2"))
取消快捷键也有几种方法:
setShortcut(0);
setShortcut(QKeySequence());
如果要制作带有自定义快捷键列表的界面,需要动态设定action的快捷键,这种方式比较合适