Qt 5.7及以上版本支持了虚拟键盘的支持,但是这个虚拟键盘太不好用,占据半个屏幕,而且不能放大缩小,不能拖动
首先,下载Qt虚拟键盘源码并解压,并切换到该目录下
然后配置支持中文:
qmake CONFIG+="lang-en_GB lang-zh_CN" ,默认支持英文,lang-zh_CN就是中文支持选项
mingw32-make
mingw32-make install
这样就编译成功,可以用Qt creator打开Qt自带的虚拟键盘例程(basic.pro)可以看到原生的Qt自带的软键盘,很丑,而且不可拖动,不可缩放,占据大半个屏幕
修改源码:
1.设置可拖动;
在virtualkeyboard工程下,找到InputPanel.qml文件
添加下面一段代码:
propertyrealmouseXTMP:0
propertyrealmouseYTMP:0
MouseArea{
anchors.fill:parent
onPressed:{
mouseXTMP=mouseX
mouseYTMP=mouseY
}
onPositionChanged:{
inputPanel.x=mouseX+inputPanel.x-mouseXTMP
inputPanel.y=mouseY+inputPanel.y-mouseYTMP
}
}
然后重新编码mingw32-make;mingw32-make install
重新打开basic示例程序,可以看到键盘可以拖动了,但是拖动到上面就不见了;
接下来,修改keyboard.qml文件:
找到binding选项:修改如下:
Binding{
target:InputContext
property:"keyboardRectangle"
value:Qt.rect(0,
0,
1900,1300)
when:keyboard.active&&!InputContext.animating
}将value修改为自己的分辨率大小就可以了,其他不用改,修改后就可以将软键盘拖动到随意位置了
修改软键盘大小:
找到style.qml(default目录下的):修改下面两项:
keyboardDesignWidth:3060
keyboardDesignHeight:600
但是软键盘不能将宽度缩小,只能将高度变小(对于qml不是很了解,有知道怎么改宽度的请指导下),
重新编译后,就发现软键盘可拖动,并且变小了。
要是有好的改动方法,一起讨论。