Qt 实现 禁用快捷键

举报
咚咚隆地咚 发表于 2022/09/22 09:45:56 2022/09/22
【摘要】 在我们使用QDialog时,所有的跨界件都是默认打开的,在我使用的过程中,突然发现esc也可以关闭页面,当我以为这是一个简便方法事,同事告诉我不能这样,在之后的使用过程中会遇到太多太多的麻烦。因此 我通过查询总结一下关于QDialog 关闭使用快捷键。 例如 esc在查询过程中发现,当按下Esc键时,会默认执行reject()函数,但是这个函数以及他的点击函数都是系统默认的,因此我们需要重写...

在我们使用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中使用,并且在下面写上自己用对应的内容。

总结

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。