我有简单的QML应用,只显示一个SWIM
:
TextField
我想,当我触摸Rectangle {
color: "#00000000"
TextField {
anchors.centerIn: parent
}
}
时,Android键盘会自动显示,但它没有发生。
我尝试在TextField
的{{1}}内使用focus
,Qt.inputMethod.show()
,forceActiveFocus()
以及许多其他方法,但无论如何键盘都未显示。
试图在其他设备和Android 4.1-4.4版本上使用app,但结果始终相同)))):
这是错误还是Component.onCompleted
设置不正确?
答案 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/Height
和Text: Font Point size
值。如果没有,你可能会看到你的文字在真正的Android设备上看起来很小,有时如果没有正确锚定,很难在应用程序上注意你的文本字段,因为你在屏幕上只有一个textField项目。
如果没有直接解决您的问题。希望这有助于您调试并获得解决方案。