• 大小: 12.52MB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: 其他
  • 标签:

资源简介

qt输入法, qt有两类输入法 一个是基于QInputContext 高版本适用 一个是基于QWSMethod低版本嵌入式使用。 我的代码在VS2010下编写。 你在调试前请安装qt的VS2010插件。与qtVS库,就直接可以编译运行 InputContext,QWSMehod的高版本编译不了,请在linux上安装低版本后编译。 在hi3510板子上运行成功。 本人低版本是4.5.3,高版本是4.8.1.其他版本未测试,请谨慎下载。

资源截图

代码片段和文件信息

#include 
#include “inputmethod.h“
#include “login.h“

InputMethod::InputMethod()
{
    keyboard = new KeyBoard;
connect( keyboard SIGNAL( characterGenerated(QChar) ) SLOT(setInputText(QChar ) ) );
}

InputMethod::~InputMethod()
{
    delete keyboard;
}

/*
* Name : void eventFilter(Qobject *obj QEvent *event);
* Type : QEvent
* Func : judge input method event
* In   : QobjectQEvent
* Out  : bool
*/
bool InputMethod::eventFilter(Qobject *obj QEvent *event)
{
    if(event->type()==QEvent::MouseButtonPress)
    {
        emit setImObjName(obj->objectName()); //send the object Name of event to judge who trigger it
        //qDebug() <objectName();
        showKeyBoard();
        return true;
    }

    return Qobject::eventFilter(objevent);
}


/*
* Name : void showKeyBoard();
* Type : function
* Func : show keyBoard
* In   : Null
* Out  : Null
*/
void InputMethod::showKeyBoard()
{
    keyboard->move(50120);
keyboard->show();
}



void InputMethod::setInputText( QChar c )
{
QPointer w = QApplication::focusWidget();
if (!w)
return;

/* 当收到按键面板的按键输入后,分别向当前焦点Widget发送KeyPress和KeyRelease事件 */

QKeyEvent keyPress(QEvent::KeyPress c.unicode() Qt::NoModifier QString(c));
QApplication::sendEvent(w &keyPress);

if (!w)
return;

QKeyEvent keyRelease(QEvent::KeyRelease c.unicode() Qt::NoModifier QString(c));
QApplication::sendEvent(w &keyRelease);
}

QString InputMethod::identifierName()
{
return ““;
}
QString InputMethod::language()
{
return ““;
}

void InputMethod::reset()
{
}
void InputMethod::update()
{
}

bool InputMethod::isComposing() const
{
return true;
}

bool InputMethod::filterEvent( const QEvent *event )
{
if (event->type() == QEvent::RequestSoftwareInputPanel) 

{

/* 当某个Widget请求软键盘输入时,显示软键盘 */
keyboard->show();
return true;
}

else if (event->type() == QEvent::CloseSoftwareInputPanel) 

{

/* 当某个Widget请求关闭软键盘输入时,关闭软键盘 */
// keyboard->hide();
return true;
}
return false;

}

评论

共有 条评论

相关资源