-
大小: 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;
}
评论
共有 条评论