从这里考虑"属性和方法更改":
TextInput和TextEdit的openSoftwareInputPanel()和closeSoftwareInputPanel()方法已被删除。使用新的Qt.inputMethod属性并调用Qt.inputMethod.show()Qt.inputMethod.hide()来显示和隐藏虚拟键盘。
我在下面写了一个简单的例子。
import QtQuick 2.3
import QtQuick.Window 2.2
Window
{
id: root
visible: true
width: 600
height: 557
Rectangle
{
id: numberInputBox
height: 500
width: 300
border.color: "green"
TextInput
{
id: textInput
font.pixelSize: 20
cursorVisible: true
height: 500
width: 300
MouseArea
{
anchors.fill: parent
onClicked:
{
Qt.inputMethod.show()
console.log("getPrinted")
}
}
}
}
}
当console.log
的文本被打印出来时,我在屏幕上看不到任何键盘。
更新:
我试过了:
import QtQuick 2.3
import QtQuick.Window 2.2
Window
{
id: root
visible: true
width: 600
height: 557
Rectangle
{
id: numberInputBox
height: 500
width: 300
border.color: "green"
property string numericText
TextInput
{
id: textInput
text: parent.numericText
focus: true
activeFocusOnPress: true
font.pixelSize: 20
cursorVisible: false
MouseArea
{
anchors.fill: parent
onClicked:
{
Qt.inputMethod.show ()
console.log("fsdfsdf")
}
}
}
}
}
同样,文本会被打印出来,但键盘不会显示出来。我在Ubuntu 14.04.1 LTS上使用Qt 5.4和QtCreator 3.3.0
如评论所述,Qt Virtual Keyboard
仅在Qt的顶级许可版本中可用,即"专业"one_answers"企业"版本,此下载页面上的功能表清楚地表明了这一点。
"社区版"(Qt的开源版本)不包括键盘。因此,在桌面系统上,物理键盘是唯一可用的输入选项。不同的是,在移动平台中,Qt默认连接本地虚拟键盘系统,不需要调用Qt.inputMethod
。考虑到这一点,问题中的例子可以简单地改写如下:
import QtQuick 2.3
import QtQuick.Window 2.2
Window
{
id: root
visible: true
width: 600
height: 557
Rectangle
{
id: numberInputBox
height: 500
width: 300
border.color: "green"
property string numericText
TextInput
{
id: textInput
text: parent.numericText
focus: true
activeFocusOnPress: true
font.pixelSize: 20
cursorVisible: false
}
}
}
在WinPhone、Android或iOS设备上执行此示例将在点击TextInput
后立即正确显示本机虚拟键盘。
我认为这是因为你需要给TextInput
焦点:
focus: true
这对我在Desktop上很有效,我所知道的唯一测试方法是使用Qt的虚拟键盘(并在运行应用程序之前设置QT_IM_MODULE=qtvirtualkeyboard
),正如BaCaRoZzo已经提到的那样。在具有本地虚拟键盘的平台上,如Android,不需要显式调用Qt.inputMethod.show()
。