一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

一. 设置

1.配置所需语言

1). 通过Qt Creator配置

打开Qt工程文件,点开左侧 Projects->Build->Build Steps->qmake->Additional arguments

在 Additional arguments 增加配置参数:

CONFIG+="lang-ar_AR lang-da_DK lang-de_DE lang-en_GB lang-es_ES lang-fa_FA lang-fi_FI lang-fr_FR lang-hi_IN lang-it_IT lang-ja_JP lang-ko_KR lang-nb_NO lang-pl_PL lang-pt_PT lang-ru_RU lang-sv_SE lang-zh_CN lang-zh_TW"

按需选择所需语言,当然如果简单点配置为所有语言,则如下:

CONFIG+=lang-all

2.配置所需语言

2). 直接通过命令行配置并生成makefile文件

/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake qtvirtualkeyboard.pro -spec linux-g++ 'CONFIG+=lang-all'

通过 -spec 参数指定为linux平台。

3.virtualkeyboard.pro配置文件增加:

LIBS+=-L../../lib

这么做的原因是因为集成汉语、日语等带有三方库的语言时,最后生成qtvirtualkeyboard时会找不到已生成的三方库,我们只需添加路径即可解决这个问题。

二. C++集成

为了在传统 QWidget 程序里(和QML相对应)也使用 Qt Virtual Keyboard,我们只需在程序的入口处加入如下代码即可:

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

最后,程序看起来像这样

 1 int main(int argc, char *argv[])
 2 {
 3     qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
 4 
 5     QApplication a(argc, argv);
 6     MainWindow w;
 7     w.show();
 8 
 9     return a.exec();
10 }

三. 定制键盘大小和位置

我们需要更改 InputPanel.qml 文件

 1 Item {
 2     id: inputPanel
 3 
 4     property int screenHeight: Screen.desktopAvailableHeight; 
 5     anchors.fill: parent;
 6 
 7     Keyboard {
 8         id: keyboard
 9 
10         anchors.horizontalCenter: parent.horizontalCenter
11         width: Screen.desktopAvailableWidth * 2 / 3
12         y: getInputY()
13 
14         function getInputY(){
15             return 0
16         }
17     }
18 }

  示例代码如上所示,定义了键盘的 水平中心位置 和 宽度 ,键盘的纵向位置通过 y 设定,由 getInputY() 函数返回,小C这里没有给出函数具体实现,比较常规的思路可以是根据输入框的位置自适应键盘的位置,当然这还需要更改 qtvirtualkeyboard 相关文件的c++代码,小C这里不做赘述。

posted on 2024-02-27 09:02  一杯清酒邀明月  阅读(141)  评论(0编辑  收藏  举报