通俗易懂玩QT:QT用键盘按钮显示菜单栏子目录

QT之用键盘按钮显示菜单栏子目录

运行之后的效果图如下:
实现效果图
其实实现的原理很简单,在网上查了一天的资料,也没有结果,因为 QMenu 无法设置 setShortcut() 效果,QWidget::keyPressEvent ( QKeyEvent* k ) 与 QWidget::keyReleaseEvent ( QKeyEvent* k ) 两个函数应该能实现,但是它会将字符按键输入到输入框中,这和预期效果残生和很大的差异,不可行,最后我想到了一种可能性——通过 connect() 信号卡槽的传递性来实现,就是将菜单中的一个子目录给隐藏掉的,然后给该子目录设置 setShortcut() 效果,最后用 connect() 信号卡槽函数将 QMenu 与 QAction 关联起来,这样应该可以达到实验目的,于是就成功了,并且还不需要用 connect() 信号卡槽来关联,实现步骤如下:
(1) 先 new 一个 QAction 对象来实现 setShortcut() 按键效果

m_showOptionMenuAction = new QAction(QStringLiteral(""));

(2) 然后,将该 QAction 对象设置为不可见

m_showOptionMenuAction ->setVisible(false);

(3) 接着,用 setShortcut() 给该 QAction 对象添加按键效果

m_showOptionMenuAction -> setShortcut(Qt::ALT | Qt::Key_O);

(4) 最后,将该 QAction 对象添加到 QMenu 对象上即可

m_optionMenu -> addAction(m_showOptionMenuAction);

注: 无需使用 connect() 函数来关联该 QAction 对象即可实现按键响应效果,亲测有效。

以下是部分源码,可以参考:

通俗易懂玩QT:QT用键盘按钮显示菜单栏子目录_第1张图片
学习分享,一起成长!接触QT的时间不长,大概只有一个多月,有不足之处,欢迎大佬指出来,我会进行更正。

你可能感兴趣的:(QT学习,qt5,c语言,qt)