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不是很瞭解,有知道怎麼改寬度的請指導下),

重新編譯後,就發現軟鍵盤可拖動,並且變小了。

要是有好的改動方法,一起討論。