Qt.inputMethod.show () 不显示任何键盘



从这里考虑"属性和方法更改":

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()

相关内容

  • 没有找到相关文章