我有一个简单的QML应用程序,它只显示一个TextField
:
Rectangle {
color: "#00000000"
TextField {
anchors.centerIn: parent
}
}
我想,当我触摸TextField
时,Android键盘会自动显示,但这并没有发生。我尝试在TextField
的Component.onCompleted
中使用focus
、Qt.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/Height
和Text: Font Point size
值的设置应考虑到将要部署应用程序的android设备的DPI。如果没有,你可能会看到你的文本在真正的android设备上显示得很小,有时如果锚定不正确,很难注意到你在应用程序上的文本字段,因为你在屏幕上只有一个textField项目。
如果不能直接解决您的问题。希望这能帮助您调试并找到解决方案。