通俗易懂玩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的时间不长,大概只有一个多月,有不足之处,欢迎大佬指出来,我会进行更正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混子还在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值