Qt TextField在Android设备上启动时不会调用键盘

时间:2016-05-06 18:18:28

标签: android qt qml qt5

我有简单的QML应用,只显示一个SWIM

TextField

我想,当我触摸Rectangle { color: "#00000000" TextField { anchors.centerIn: parent } } 时,Android键盘会自动显示,但它没有发生。 我尝试在TextField的{​​{1}}内使用focusQt.inputMethod.show()forceActiveFocus()以及许多其他方法,但无论如何键盘都未显示。 试图在其他设备和Android 4.1-4.4版本上使用app,但结果始终相同)))):

这是错误还是Component.onCompleted设置不正确?

2 个答案:

答案 0 :(得分:2)

我有类似的问题,而且是在

flags: Qt.FramelessWindowHint
ApplicationWindow中的

。 为Android删除它。它会影响QML中的所有文本输入。

删除后,您将获得正确的Android系统事件通知(例如Back键按下)作为奖励。

答案 1 :(得分:0)

您的代码没有任何问题。 TextFiled {}项应该在Android设备上运行时自动启动键盘。我创建了一个简单的“Qt Quick Controls Application”并添加了你的代码,它对我有用,但是如果你还没有完成它,还有几点缺点:

1. You have not set the Width/Height properties of the item properly.
2. Set anchors to your Rectangle item.

我对您的代码稍作修改,如下所示:

Rectangle {
    color: "#00000000"
    anchors.fill: parent

    Row {
        anchors.centerIn: parent
        spacing: 10

        Text {
            id: textTitle
            text: "Text Field: "
            width: 100
            height: 100
            color: "black"
            font.pixelSize: 40
            horizontalAlignment: Text.AlignRight
            verticalAlignment: Text.AlignVCenter
        }

        TextField {
            id: textField

            width: 300
            height: 100
            text: ""
            font.pixelSize: 40
            placeholderText: qsTr("Enter Your Text")
            onEditingFinished: {
                console.log("Text entered: ", textField.text)
            }
        }
    }
}

我构建了此appliaction的Windows桌面版本,并验证它是否有效。此外,我已在Nexus 6 Android模拟器上加载此应用程序。

非常重要的一点是您要加载应用程序的Android设备的 DPI(每点物理点数) 值。考虑到将部署应用程序的Android设备的DPI,应设置项目的Width/HeightText: Font Point size值。如果没有,你可能会看到你的文字在真正的Android设备上看起来很小,有时如果没有正确锚定,很难在应用程序上注意你的文本字段,因为你在屏幕上只有一个textField项目。

如果没有直接解决您的问题。希望这有助于您调试并获得解决方案。