写点什么

Qt 实现 禁用快捷键

作者:用户10086
  • 2022 年 7 月 14 日
  • 本文字数:686 字

    阅读完需:约 2 分钟


前提要点

在我们使用 QDialog 时,所有的跨界件都是默认打开的,在我使用的过程中,突然发现 esc 也可以关闭页面,当我以为这是一个简便方法事,同事告诉我不能这样,在之后的使用过程中会遇到太多太多的麻烦。因此 我通过查询总结一下关于 QDialog 关闭使用快捷键。

例如 esc

在查询过程中发现,当按下 Esc 键时,会默认执行 reject()函数,但是这个函数以及他的点击函数都是系统默认的,因此我们需要重写函数,我在查找过程中发现一个例子(有兴趣的可以打开看看),在这个帖子中发,他需要重写 keyPressEvent 和 reject 这两个函数,并且在他的帖子里,不仅仅禁止了 esc 的快捷方式。


我所使用的代码:


.h



protected: virtual void keyPressEvent(QKeyEvent *event);
复制代码


.cpp


switch (event->key())
{
case Qt::Key_Escape:
break;
default:
QDialog::keyPressEvent(event);
}
复制代码


这个方法比上面链接上的更为简便,它只需要使用一个函数就可以对 esc 的快捷键进行禁用。


接下来展示的是他一些比较常用的方法


Qt::Key_Escape Esc 键


Qt::Key_Tab Tab 键


Qt::Key_Backtab Tab 补全键


Qt::Key_Backspace 退格键


Qt::Key_Return Return 键


Qt::Key_Enter 回车键


Qt::Key_Insert Insert 键


Qt::Key_Delete Delete 键


Qt::Key_Pause 暂停键


Qt::Key_Print 截图键


Qt::Key_SysReq PrtSc


Qt::Key_Clear 清除键


Qt::Key_Home Home 键


大家可以在使用的过程中对症下药,使用自己需要的,并不需要长篇大论的全部写上。使用的方式和我的例子一样就可以了,在 switch 的 case 中使用,并且在下面写上自己用对应的内容。

总结

以上部分就是今天的更新啦,有不对的地方恳请各位多多指教。

发布于: 刚刚阅读数: 3
用户头像

用户10086

关注

还未添加个人签名 2022.07.01 加入

一个辣椒爱好者

评论

发布
暂无评论
Qt 实现 禁用快捷键_qt_用户10086_InfoQ写作社区