关于如何检测系统切换输入法的问题

加盾男爵 2018-01-03 09:22:17
win7+Qt5.7

现在需要知道用户切换输入法,当用户切换输入法时发射信号,目前试了两个方法都不行

方法1 重写窗体的输入法事件
void InputEdit::inputMethodEvent(QInputMethodEvent* event)
{
qDebug()<<"Input Method Changed";
emit inputMethodIsChanged();
QLineEdit::inputMethodEvent(event);
}

当Ctrl+空格切换输入法时(从英文切换至搜狗输入法)没有任何输出,然后开始用搜狗输入法输入中文,没按一个字母都会输出
Input Method Changed
再次用Ctrl+空格切换(从搜狗切换至英文)没有任何输出,然后用英文输入法输入英文,没有任何输出
但我需要用户切换输入法时发射信号,这里只有当用户切换至中文后,且开始输入是才开始发射信号,且是用户每按一个键就发射一次信号,和预期完全不一样

方法2在按键事件中检测Ctrl+Sheift组合键
代码差不多是这个样子
void InputEdit::keyPressEvent(QKeyEvent* event)
{
if (event->modifiers() == Qt::ControlModifier)
{
if (event->key() == Qt::Key_Shift || event->key() == Qt::Key_Space)
{
emit inputMethodIsChanged();
qDebug() << "Change Input Method";
}
}
QLineEdit::keyPressEvent(event);
}

但每次当我用Ctrl+Shift或者Ctrl+空格切换输入法时,总是输出几十行
lookupaccountname() failed. error 1332
没有其他输出,貌似没能检测到组合键

我想问下如何检测系统切换了输入法,或者说如何检测ctrl+Shift的组合键
...全文
513 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
砚昇 2018-01-08
  • 打赏
  • 举报
回复
如何解决的,可以分享一下吗?
加盾男爵 2018-01-08
  • 打赏
  • 举报
回复
问题解决了,来人接个分,我结下帖子
加盾男爵 2018-01-04
  • 打赏
  • 举报
回复
来人接分

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧