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不是很了解,有知道怎么改宽度的请指导下),

重新编译后,就发现软键盘可拖动,并且变小了。

要是有好的改动方法,一起讨论。