Qt.inputMethod.show () 不显示任何键盘
Qt.inputMethod.show () doesn't show any keyboard
考虑 "Property and Method Changes" 来自 here:
TextInput and TextEdit's openSoftwareInputPanel() and closeSoftwareInputPanel() methods have been removed. Use the new Qt.inputMethod property and call Qt.inputMethod.show() Qt.inputMethod.hide() to show and hide the virtual keyboard.
我写了下面这个简单的例子。
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
我认为这是因为你需要给予 TextInput
焦点:
focus: true
这在桌面上对我有用,我知道测试它的唯一方法是使用 Qt's Virtual Keyboard(并在 运行 应用程序之前设置 QT_IM_MODULE=qtvirtualkeyboard
),如 BaCaRoZzo已经提到了。在具有本机虚拟键盘的平台上,例如 Android,不需要显式调用 Qt.inputMethod.show()
。
如评论中所述,Qt Virtual Keyboard
is only available in top level licensed version of Qt, i.e. the "professional" and "enterprise" ones, as clearly demonstrated by the feature table available at this download page。
"Community edition"(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
时立即正确显示本机虚拟键盘。
考虑 "Property and Method Changes" 来自 here:
TextInput and TextEdit's openSoftwareInputPanel() and closeSoftwareInputPanel() methods have been removed. Use the new Qt.inputMethod property and call Qt.inputMethod.show() Qt.inputMethod.hide() to show and hide the virtual keyboard.
我写了下面这个简单的例子。
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
我认为这是因为你需要给予 TextInput
焦点:
focus: true
这在桌面上对我有用,我知道测试它的唯一方法是使用 Qt's Virtual Keyboard(并在 运行 应用程序之前设置 QT_IM_MODULE=qtvirtualkeyboard
),如 BaCaRoZzo已经提到了。在具有本机虚拟键盘的平台上,例如 Android,不需要显式调用 Qt.inputMethod.show()
。
如评论中所述,Qt Virtual Keyboard
is only available in top level licensed version of Qt, i.e. the "professional" and "enterprise" ones, as clearly demonstrated by the feature table available at this download page。
"Community edition"(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
时立即正确显示本机虚拟键盘。