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 时立即正确显示本机虚拟键盘。