Qt5.7以上调用虚拟键盘(支持中文),以及源码修改(可拖动,水平缩放)
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文件
添加下面一段代码:
property real mouseXTMP: 0
property real mouseYTMP: 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不是很了解,有知道怎么改宽度的请指导下),
重新编译后,就发现软键盘可拖动,并且变小了。
要是有好的改动方法,一起讨论。