【问题标题】:Clear TextField in QML on Android在 Android 上的 QML 中清除 TextField
【发布时间】: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)。另外我想这是由于键盘的自动完成功能。

我是否以错误的方式清除文本输入?

我的测试用例:

  1. 使用带有自动完成功能的虚拟键盘在字段中输入内容。
  2. 不确认输入,选择当前单词(下划线)
  3. 点击清除按钮(调用 clearSearch())
  4. 请注意,TextField 中仍有下划线文本
  5. 再次点击一个字段,看到键盘再次显示,文本字段现在是空的

附: Qt 5.5

【问题讨论】:

  • 通常searchField.text = "" 足以清除该字段。您要么 a) 没有正确调用 clearSearch,要么 b) text 属性和 displayText 之间存在差异。如果是第二种情况,你可以写searchField.displayText = ""
  • @BaCaRoZzo,谢谢你的建议。我正在正确调用 clearSearch,我已经使用调试器对其进行了测试。当然 text 和 displayText 之间是有区别的。 displayText 是一个只读属性。此代码在桌面平台上运行良好。我只遇到虚拟键盘问题
  • 啊,是的,我的财产不好。 :) 看起来还是很奇怪。从来没有一个明确的问题。听起来好像还有其他事情发生。
  • @BaCaRoZzo 有趣的是,当我点击文本字段,再次激活焦点时,它会按预期清除。

标签: android qt qml qtquick2 qtquickcontrols


【解决方案1】:

您可以调用Qt.inputMethod.reset() 重置来自输入法的任何部分未提交的文本输入。

【讨论】:

  • 感谢您的建议。我试过了,不幸的是它对我不起作用。
  • 你是对的。这完全解决了问题。由于其他线路,它不起作用。应该只是一个电话Qt.inputMethod.reset(),没有别的。谢谢!
猜你喜欢
  • 2017-08-29
  • 1970-01-01
  • 2022-06-12
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 2020-04-21
相关资源
最近更新 更多