Qt5 Virtual Keyboard C++集成与实现
参考:
一. 下载源代码
去官方github下载所需版本的源码:
https://github.com/qt/qtvirtualkeyboard/releases
小C下载的版本为:
https://github.com/qt/qtvirtualkeyboard/archive/v5.10.0.tar.gz
二. 设置
-
配置所需语言
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). 直接通过命令行配置并生成makefile文件/opt/Qt5.10.1/5.10.1/gcc_64/bin/qmake qtvirtualkeyboard.pro -spec linux-g++ 'CONFIG+=lang-all'
通过
-spec
参数指定为linux平台。 -
virtualkeyboard.pro配置文件增加:
LIBS+=-L../../lib
这么做的原因是因为集成
汉语、日语等
带有三方库的语言时,最后生成qtvirtualkeyboard时会找不到已生成的三方库,我们只需添加路径即可解决这个问题。
三. C++集成
为了在传统 QWidget 程序里(和QML相对应)也使用 Qt Virtual Keyboard,我们只需在程序的入口处
加入如下代码即可:
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
最后,程序看起来像这样
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
四. 定制键盘大小和位置
我们需要更改 InputPanel.qml 文件
Item {
id: inputPanel
property int screenHeight: Screen.desktopAvailableHeight;
anchors.fill: parent;
Keyboard {
id: keyboard
anchors.horizontalCenter: parent.horizontalCenter
width: Screen.desktopAvailableWidth * 2 / 3
y: getInputY()
function getInputY(){
return 0
}
}
}
示例代码如上所示,定义了键盘的 水平中心位置
和 宽度
,键盘的纵向位置通过 y
设定,由 getInputY()
函数返回,小C这里没有给出函数具体实现,比较常规的思路可以是根据输入框的位置自适应键盘的位置
,当然这还需要更改 qtvirtualkeyboard 相关文件的c++代码,小C这里不做赘述。
您好,我是c++工程,没有InputPanel.qml 这个文件,请问您的工程文件可以给一下做参考吗,感激不尽。
https://github.com/qt/qtvirtualkeyboard/archive/v5.10.0.tar.gz
源代码里面的