Qt5.8以上的版本推出了QML的软键盘功能,本文介绍怎么使用软键盘以及修改软件盘的尺寸大小方法。以windows系统为例,linux系统的使用方法也是一样。需要qml支持,如果需要移植arm需要先确定是否能支持qml
使用环境:windows10 Qt5.14.0
在pro文件添加QT +=printsupport
在main文件添加qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”)); 加载软键盘
注意事项:qputenv(“QT_IM_MODULE”, QByteArray(“qtvirtualkeyboard”)); 必须写在QApplication a(argc, argv); 前面
原因分析:Qt没有设置环境环境变量,找不到对应的库路劲,通过windeployqt工具打包过去的库会不完整,使用无法显示。
1.需要在生成的.exe添加几文件夹
添加plugins文件夹,源文件在Qt安装目录的Qt\5.14.1\mingw73_64 下,具体路劲根据自己的安装位置,没有必要全部拷贝过去,在plugins下保留两个必要的platforminputcontexts和virtualkeyboard文件夹。
2.将qml目录也拷贝过去
3. 添加动态库:
将一下几个动态库全部拷贝到exe目录
Qt5Network.dll*
Qt5Qml.dll*
Qt5QmlModels.dll*
Qt5QmlWorkerScript.dll*
Qt5Quick.dll*
Qt5QuickControls2.dll*
Qt5QuickParticles.dll*
Qt5QuickShapes.dll*
Qt5QuickTemplates2.dll*
Qt5QuickTest.dll*
Qt5QuickWidgets.dll*
Qt5VirtualKeyboard.dll*
总共拷贝的:
如果还不行可以试试将Qt安装目录编译器版本对应的bin目录的动态库和文件夹全部拷贝到exe目录
在一些应用场所默认的软键盘占用的屏幕太大,比如平板电脑,arm设备,所以需要修改尺寸
下载地址链接: https://download.qt.io/archive/qt/ ,根据自己的Qt版本下载,比如我的是Qt5.14,所以下载的是
https://download.qt.io/archive/qt/5.14/5.14.0/submodules/下的qtvirtualkeyboard-everywhere-src-5.14.0.tar.xz文件
下载完后解压用Qt打开工程进行编译
使用Qt IDE 打开qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\src\virtualkeyboard\virtualkeyboard.pro 工程
将virtualkeyboard.pro工程下的desktopinputpanel.cpp文件的show函数修改,根据自己的实际情况修改
我修改的如下:然后编译
void DesktopInputPanel::show()
{
AppInputPanel::show();
Q_D(DesktopInputPanel);
if (d->view) {
QRect WindowsSize=QGuiApplication::primaryScreen()->availableGeometry();
WindowsSize.setX(WindowsSize.width()/2-WindowsSize.width()/4);
WindowsSize.setY(WindowsSize.y()/2);
WindowsSize.setWidth(WindowsSize.width()*0.75);
WindowsSize.setHeight(WindowsSize.height()*0.75);
qDebug()<<"DesktopInputPanel Size"<<WindowsSize;
repositionView(WindowsSize);
d->view->show();
}
}
在windows编译的时候会出现找不到好几个头文件,linux则不会,原因是在头文件中使用了相对路劲,在windows中编译器无法识别到路劲,使用需要将几个头文件覆盖掉
报错位置头文件:
\qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\include\QtVirtualKeyboard\5.14.0\QtVirtualKeyboard\private
解决方法:
将\qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\src\virtualkeyboard下的头文件全部拷贝到\qtvirtualkeyboard-everywhere-src-5.14.0\qtvirtualkeyboard-everywhere-src-5.14.0\include\QtVirtualKeyboard\5.14.0\QtVirtualKeyboard\private覆盖掉原来的头文件即可
将重新编译出来的Qt5VirtualKeyboard.dll动态库拷贝到exe文件所在目录下替换掉原来的动态库文件即可
没改前:
修改之后:
博主回家发展茶叶,自己种茶做茶,需要茶叶和一些咨询简单(博主自己有能力解决的)技术问题朋友可以咨询博主。
微信 : chashanrj
抖音 : 茶山日记
茶山美景: