资源简介

Qt输入法事件(QInputMethodEvent)演示小程序。 程序功能:在失去QTextEdit控件失去焦点的时候放弃正在输入的内容。 解决搜狗(或QQ)输入法等输入法失去焦点时会将字幕输入到输入框问题。 运用了Qt的事件监听(eventFilter)技术,自定义窗口部件(提升法)技术。 ~~~注释详细。

资源截图

代码片段和文件信息

#include “CustomTextEdit.h“
#include 
#include 

CustomTextEdit::CustomTextEdit(QWidget *e)
    :QTextEdit(e)
{
    installEventFilter(this);
}

CustomTextEdit::~CustomTextEdit()
{

}

bool CustomTextEdit::eventFilter(Qobject *_watcher QEvent *_event)
{
    /**************************************验证事件处理顺序
    if(QEvent::FocusOut == _event->type())
    {
        qDebug() << “===============FocusOut=====“<< hasFocus() <<“==============“;
    }
    ****************************************/
    if(QEvent::InputMethod == _event->type())  //输入法事件
    {
        //qDebug() << “============InputMethod=====“<< hasFocus() <<“=============“;
        if(!hasFocus()) //经验证,失去焦点时,输入法事件优先于FocusOut事件被处理
        {
            QInputMethodEvent* iEvent = dynamic_cast (_event); //注意用将_event括起来
            iEvent->setCommitString(““);    //将失去焦点后提交的字符串设置为空
        }
    }

    return QTextEdit::eventFilter(_watcher_event);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-08-22 19:56  InputMethodTest\
     文件        1060  2013-08-22 19:54  InputMethodTest\CustomTextEdit.cpp
     文件         846  2013-08-22 19:54  InputMethodTest\CustomTextEdit.h
     文件         743  2013-08-22 18:10  InputMethodTest\edittestdialog.cpp
     文件         398  2013-08-22 17:45  InputMethodTest\edittestdialog.h
     文件        1455  2013-08-22 19:46  InputMethodTest\edittestdialog.ui
     文件         399  2013-08-22 17:20  InputMethodTest\InputMethodTest.pro
     文件       37234  2013-08-22 19:40  InputMethodTest\InputMethodTest.pro.user
     文件         201  2013-08-22 16:57  InputMethodTest\main.cpp
     文件         656  2013-08-22 19:57  InputMethodTest\程序说明.txt

评论

共有 条评论