当前位置:网站首页>Qt中输入框在Win10上“Win+/“快捷键的一个Bug
Qt中输入框在Win10上“Win+/“快捷键的一个Bug
2022-08-10 05:39:00 【KumaNPC】
Qt中输入框在Win10上"Win+/"的输入法Bug
最近项目测试中偶然发现Win10上使用微软输入法,按“Win + /”快捷键会导致UI假死或无法输入中文,Win11没有复现。猜测应该是微软中文输入法的Bug,测试了QQ输入法和日语输入法,都没有问题。
问题复现
Qt窗口放一个输入框,先输入几个字符,切换到微软输入法,按Win+/快捷键(有的版本可能直接卡死),然后继续输入中文,能看到拼音和候选词窗口,选择候选词没有效果。
微软官网上“Win+/”快捷键操作是“Begin IME reconversion”,网上也没有太多的资料,大概意思是说触发重新转换字符串,所有软件针对该快捷键,要么什么都不做,或者输入“/”,或者输入“、”。
解决办法(暂时)
拦截消息发现该快捷键会发送WM_IME_REQUEST消息,wParam值为IMR_RECONVERTSTRING,Qt内部是额外处理的。
尝试用QAbstractNativeEventFilter拦截一下,调用QApplication::installNativeEventFilter安装一个native消息的过滤器,直接忽略掉:
class NativeEventFilter: public QAbstractNativeEventFilter{
protected:
bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result){
if(eventType == "windows_generic_MSG"){
MSG * msg = static_cast<MSG *>(message);
if(msg->message == WM_IME_REQUEST && msg->wParam == IMR_RECONVERTSTRING){
* result = 0;
return true;
}
}
return false;
}
};
似乎该方法也没有什么副作用
边栏推荐
猜你喜欢
随机推荐
享元模式-缓存池
关于Qt高频率信号槽合并的误解和方案
网页安全证书错误但无法安装证书的解决办法
21天学习挑战赛--补种胡杨求最大连续胡杨数量
npm搭建私服,上传下载包
mysql连接报错:Cannot get a connection, pool error Timeout waiting for idle object
Share a professional TA's "Shader Reference"
二叉树 6/16 81-85
制作一个启动软盘并用bochs模拟器启动
R language cluster analysis - code analysis
酸回收工艺讲解
所有文章汇总目录
请亲们关注下我,谢谢了。
pthread编程重要知识点
在TypeScript中使用parseInt()
浅谈游戏中3种常用阴影渲染技术(3):阴影贴图
Two-dimensional cartoon rendering of strokes
Myunity框架笔记
OpenGL学习笔记(LearnOpenGL)-第三部分 绘制矩形
Talking about the realization idea of "frame" of "frame synchronization online game"









