Qt问题:QDilog按下回车键竟然关闭了,想屏蔽Return键结果和Enter键弄反了,最后还接收不到Return的键盘事件了,气人不

问题描述:

1、程序的QDialog窗口按下回车竟然关闭了,感觉跟奇怪,不知道为什么。
2、最后想要通过重写QDialog的keyPressEvent屏蔽调回车键,结果Return和Enter傻傻分不清楚。
3、Return和Enter搞清楚了之后发现键盘事件竟然接收不到回车键。
这就一个问题引出来另外两个问题了,最后才傻傻的搞清楚。

解释(让我们倒着解释):

关于问题3的解释:

因为QDialog中存在控件的focusPolicy是Qt::StrongFocus,不光导致QDialog的键盘事件接受不到回车键,方向键也接收不到。

关于问题3的解决方案:

QDialog初始化时,设置:

setFocusPolicy(Qt::StrongFocus);


关于问题2的解释:

大键盘上的回车键是Qt::Key_Return;
小键盘上的回车键是Qt::Key_Enter;

关于问题2的解决方案:

判断正确就好了。

关于问题1的解释:

因为QDialog的窗口中有一个QPushButton,该按钮的点击信号槽连接到窗口关闭操作,而且该按钮的focusPolicy是Qt::StrongFocus。正是因为这哥focusPolicy和该按钮连接的信号槽导致了回车关闭。
在这里插入图片描述
关于问题1的解决方案:

  1. QDialog弹出时把QPushButton的focusPolicy设置为Qt::NoFocus。
  2. 者重写QDialog的键盘事件将回车键屏蔽掉。

总结:

害,你说下键不下键

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值