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



我有一个简单的QML应用程序,它只显示一个TextField:

Rectangle {
    color: "#00000000"
    TextField {
        anchors.centerIn: parent
    }
}

我想,当我触摸TextField时,Android键盘会自动显示,但这并没有发生。我尝试在TextFieldComponent.onCompleted中使用focusQt.inputMethod.show()forceActiveFocus()和许多其他方法,但键盘无论如何都没有显示。尝试在其他设备和Android 4.1-4.4版本上使用应用程序,但结果始终相同)):

这是错误还是TextField的设置不正确?

我也遇到过类似的问题,它在中

flags: Qt.FramelessWindowHint

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

删除后,您将获得适当的android系统事件通知(例如按back键)作为奖励。

您的代码没有任何问题。TextFiled {}项目在安卓设备上操作时应自动启动键盘。我创建了一个简单的"Qt Quick Controls应用程序",并添加了您的代码,它对我很有效,但如果您还没有完成,还缺少几点:

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

我构建了这个应用程序的windows桌面版本,并验证了它的工作原理。此外,我已经在Nexus 6安卓模拟器上加载了这个应用程序。

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

如果不能直接解决您的问题。希望这能帮助您调试并找到解决方案。

最新更新