【发布时间】:2016-11-20 20:32:37
【问题描述】:
我有一个简单的文本字段:
TextField {
id: searchField
height: Units.dp * 40
color: Palette.colors["white"]["500"]
textColor: Palette.colors["white"]["500"]
placeholderText: qsTr("Search...")
}
我正在尝试清除 TextField 输入,如下所示:
function clearSearch() {
Qt.inputMethod.reset()
Qt.inputMethod.hide()
searchField.focus = false
searchField.text = ""
}
似乎在 Android 功能 clearSearch 上不起作用。我看到的文本输入仍然包含最后输入的文本(我猜它是一个 displayText)。另外我想这是由于键盘的自动完成功能。
我是否以错误的方式清除文本输入?
我的测试用例:
- 使用带有自动完成功能的虚拟键盘在字段中输入内容。
- 不确认输入,选择当前单词(下划线)
- 点击清除按钮(调用 clearSearch())
- 请注意,TextField 中仍有下划线文本
- 再次点击一个字段,看到键盘再次显示,文本字段现在是空的
附: Qt 5.5
【问题讨论】:
-
通常
searchField.text = ""足以清除该字段。您要么 a) 没有正确调用clearSearch,要么 b)text属性和displayText之间存在差异。如果是第二种情况,你可以写searchField.displayText = ""。 -
@BaCaRoZzo,谢谢你的建议。我正在正确调用 clearSearch,我已经使用调试器对其进行了测试。当然 text 和 displayText 之间是有区别的。 displayText 是一个只读属性。此代码在桌面平台上运行良好。我只遇到虚拟键盘问题
-
啊,是的,我的财产不好。 :) 看起来还是很奇怪。从来没有一个明确的问题。听起来好像还有其他事情发生。
-
@BaCaRoZzo 有趣的是,当我点击文本字段,再次激活焦点时,它会按预期清除。
标签: android qt qml qtquick2 qtquickcontrols