在有些项目中,可能需要在 widget上切换输入法,进行文本输入,进行标注;但是,不管怎么按shift都无法切换中英文,在MFC的对话框中也一样,但是单文档,多文档却可以,这是什么原因呢,难道是Qt的bug? 要解决这个也不难,由于输入事件在widget中默认没有处理,需要在窗体构造函数中进行设置,添加几行代码即可,如下:
this->setAttribute(Qt::WA_InputMethodEnabled, true); this->setAttribute(Qt::WA_KeyCompression, true); this->setFocusPolicy(Qt::WheelFocus);
中英文可以切换了,那怎么接收输入法输入的内容呢,如下图
如果是Edit类型的控制, 自动获取了输入的内容,Widget上是不行的,需重写输入事件inputMethodEvent
本篇博客全部代码如下:
头文件
#ifndef MAINWINDOW_H #define MAINWINDOW_H #includeQT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class