linux下qt使用谷歌拼音,GitHub - aron566/google_pinyinim: 谷歌拼音输入法移植至QT,纯widget实现...

google_pinyinim

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f61726f6e3536362f676f6f676c655f70696e79696e696d

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f61726f6e3536362f676f6f676c655f70696e79696e696d

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f61726f6e3536362f676f6f676c655f70696e79696e696d

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d4c696e757825374357696e646f77732537434d6163253743456d6265646465642d6f72616e67652e737667

_ _ _ _

| | (_) (_) (_)

__ _ ___ ___ __ _ | | ___ _ __ _ _ __ _ _ _ _ __ _ _ __ ___

/ _` | / _ \ / _ \ / _` || | / _ \ | '_ \ | || '_ \ | | | || || '_ \ | || '_ ` _ \

| (_| || (_) || (_) || (_| || || __/ | |_) || || | | || |_| || || | | || || | | | | |

\__, | \___/ \___/ \__, ||_| \___| | .__/ |_||_| |_| \__, ||_||_| |_||_||_| |_| |_|

__/ | __/ | ______ | | __/ |

|___/ |___/ |______||_| |___/

谷歌拼音输入法移植至QT

移植方法

第一种直接带入源码编译

这个无需多讲,直接将所有的工程包含到你所需的工程中去即可,可查看.pro文件涉及哪些文件。

第二种链接方式

1、clone工程到你的本地目录,打开项目

2、动态库的生成:修改项目中.pro文件中TEMPLATE = app改为lib即可生成动态库文件

# 生成库文件

TARGET = virtualkeyboard

TEMPLATE = lib

3、静态库的生成(不会更新之前已生成的动态库文件!):

# 生成库文件

TARGET = virtualkeyboard

TEMPLATE = lib

# 指定生成为静态库

CONFIG += staticlib

4、取出工程中所有.h文件及编译生成的库文件

5、将.h文件加入到你需要用到的工程中,.pro文件中链接此动态库文件即可

项目中.pro文件增加的内容如下:

# 软键盘

include(keyboard/keyboard.pri)

# 软键盘linux

unix:!macx: LIBS += -L$$PWD/keyboard/

unix:!macx: LIBS += -lvirtualkeyboard

# 软键盘windows

win32: LIBS += -L$$PWD/keyboard/

win32: LIBS += -lvirtualkeyboard

5.1、在你的工程中新建keyboard文件夹

5.2、在keyboard文件夹中新建keyboard.pri文件

填入如下内容:

HEADERS += \

$$PWD/customerqpushbutton.h \

$$PWD/keyboard.h \

$$PWD/lib/atomdictbase.h \

$$PWD/lib/dictbuilder.h \

$$PWD/lib/dictdef.h \

$$PWD/lib/dictlist.h \

$$PWD/lib/dicttrie.h \

$$PWD/lib/lpicache.h \

$$PWD/lib/matrixsearch.h \

$$PWD/lib/mystdlib.h \

$$PWD/lib/ngram.h \

$$PWD/lib/pinyinime.h \

$$PWD/lib/pinyinime_global.h \

$$PWD/lib/searchutility.h \

$$PWD/lib/spellingtable.h \

$$PWD/lib/spellingtrie.h \

$$PWD/lib/splparser.h \

$$PWD/lib/sync.h \

$$PWD/lib/userdict.h \

$$PWD/lib/utf16char.h \

$$PWD/lib/utf16reader.h \

$$PWD/virtualkeyboard.h

5.3、复制customerqpushbutton.h keyboard.h virtualkeyboard.h到keyboard文件夹

5.4、复制编译的动态库文件或者静态库文件到keyboard文件夹

5.5、在keyboard文件夹中新建lib文件夹

将克隆的工程中googlelib文件夹中所有.h后缀的文件复制到此

5.6、修改keyboard.h 中#include 改为 #include

5.7、复制data目录下的词典文件到keyboard文件夹内,(在其他目标板上运行,需将词典复制过去,实例化时指定加载路径信息)

6、点击小锤子编译即可

7、如果动态库则上传动态库文件到特定硬件上

修改相关参数

修改输入法界面尺寸大小

打开virtualkeyboard.h文件,文件中定义皆以pixel为单位

修改其中UI_KEYBOARDWINDOW_WIDTH与UI_KEYBOARDWINDOW_HEIGHT宏定义为多少pixel

修改显示中文结果的间隙大小:水平间隙CHINESESEARCH_BLOCKSTYLE_MULTI_RECT_X_GAP,垂直间隙CHINESESEARCH_BLOCKSTYLE_MULTI_RECT_Y_GAP

修改每页显示数目:列数目CHINESESEARCH_BLOCKSTYLE_RECT_H_NUM_MAX,行数目CHINESESEARCH_BLOCKSTYLE_RECT_V_NUM_MAX

其他修改直接看文件中说明

使用方式

输入框使用单一QLineEdit控件便于管理

初始化部分

1、实例化键盘

keyboard *pKeyboard = new keyboard(this ,"谷歌词典文件路径" ,"用户词典文件路径");

2、连接键盘输入结束信号

connect(pKeyboard ,&keyboard::editisModifiedok ,this ,&MainWindow::slotKeyboardReturn);

6、槽函数处理,参数str为输入的内容

void MainWindow::slotKeyboardReturn(QString str)

{

/*do something...*/

}

调用键盘

/*设置显示键盘*/

void showKeyboard(QString title = "键入xx的内容:" ,QString str = "2020");

/*单独设置标题*/

void set_editTips(QString title = "键入xx的内容:");

/*单独设置输入框内容*/

void set_editBox(QString str = "2020");

/*设置键盘模式*/

void set_keyboardmode(KEYBOARD_MODE mode);

1、调整键盘模式

enum KEYBOARD_MODE

{

NUM_ONLY = 0,/**< 数字模式,字母键将不可用*/

EN_ONLY,/**< 英文模式,数字键将不可用*/

ANY,/**< 全功能,默认模式*/

};

eg:

pKeyboard->set_keyboardmode(keyboard::NUM_ONLY);

互动

1、主线程的主界面部分管理

private:

QWidget* pLastCallobj;/**< 保存着上次隐藏的页面,也可不用,但需要调用键盘的页面不隐藏*/

QLineEdit *pLastCallwidget;/**< 保存上次调用键盘的控件*/

2、主线程建立槽,调用键盘显示

/*连接子界面要求显示键盘的信号*/

connect(parameterui, &parameter::show_keyboard, this, &MainWindow::slotprocessedit);

void MainWindow::slotprocessedit(QWidget *pObject, QLineEdit *pwidget, QString title, QString edittext)

{

pLastCallobj = pObject;

pLastCallwidget = pwidget;

pKeyboard->showKeyboard(title, edittext);

}

3、主线程,连接键盘输入完成信号

connect(pKeyboard, &keyboard::editisModifiedok, this, &MainWindow::slotKeyboardReturn);

void MainWindow::slotKeyboardReturn(QString str)

{

/*重新显示子级页面*/

pLastCallobj->show();

/*将键盘的字符串给编辑框*/

pLastCallwidget->setText(str);

}

4、主线程子级页面,输入控件被点击处理

QLineEdit控件有以下几个信号:

// returnPressed:聚焦在控件上按下回车键时发出,通常用作不带触摸屏的环境

// selectionChanged:聚焦到时发出一次信号

// 连接信号:

connect(ui->clientiplineEdit, &QLineEdit::selectionChanged, this, &parameter::on_clientip_Pressed);

connect(ui->clientiplineEdit, &QLineEdit::returnPressed, this, &parameter::on_clientip_Pressed);

/*需要注意的是,当控件代码由UI设计器自动生成时,信号与槽的建立应当在UI设计器中完成*/

signals:

void show_keyboard(QWidget *, QLineEdit *, QString, QString);

/*在parameter界面,clientip输入框被点击*/

void parameter::on_clientip_Pressed()

{

emit show_keyboard(this ,ui->clientip,"输入客户端IP" ,ui->clientip->text());

this->hide();

}

5、连接信号与槽

connect(parameterui ,&parameter::show_keyboard ,this ,&MainWindow::slotprocessedit);/*parameterui为主界面的子级页面*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值