Qt界面无法切换输入法的解决方法

        在有些项目中,可能需要在 widget上切换输入法,进行文本输入,进行标注;但是,不管怎么按shift都无法切换中英文,在MFC的对话框中也一样,但是单文档,多文档却可以,这是什么原因呢,难道是Qt的bug? 要解决这个也不难,由于输入事件在widget中默认没有处理,需要在窗体构造函数中进行设置,添加几行代码即可,如下:

this->setAttribute(Qt::WA_InputMethodEnabled, true);
this->setAttribute(Qt::WA_KeyCompression, true);
this->setFocusPolicy(Qt::WheelFocus);

       中英文可以切换了,那怎么接收输入法输入的内容呢,如下图

Qt界面无法切换输入法的解决方法

       如果是Edit类型的控制, 自动获取了输入的内容,Widget上是不行的,需重写输入事件inputMethodEvent

       本篇博客全部代码如下:

       头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#includeQT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class

               

上一篇:Qt事件过滤及其应用


下一篇:GraphicsLayoutWidget 绘图