2016-11-20 8 views
0

У меня есть простой текстовое поле:Clear TextField в QML на Android

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. Нажмите на поле снова , и увидите, что клавиатура снова отображается, и текстовое поле пуст сейчас

PS Qt 5.5

+0

Обычно 'seekField.text =" "' достаточно, чтобы очистить поле. Вы либо a) не вызываете 'clearSearch' правильно, либо b) существует разница между свойством' text' и ['displayText'] (http://doc.qt.io/qt-5/qml-qtquick-textinput.html# DisplayText-проп). Если во втором случае вы можете просто написать 'searchField.displayText =" "'. – BaCaRoZzo

+0

@BaCaRoZzo, thx для предложения. Я правильно вызываю clearSearch, я тестировал это с помощью отладчика. Конечно, есть разница между текстом и displayText. И displayText - свойство readonly. Этот код отлично работает на настольной платформе. У меня проблема только с виртуальной клавиатурой –

+0

Ах да, мой плохой для собственности. :) Это все еще кажется странным. Никогда не было ясной проблемы. Похоже, что происходит что-то еще. – BaCaRoZzo

ответ

1

Вы можете позвонить Qt.inputMethod.reset(), чтобы сбросить какой-либо частичный текст без ввода текста из метода ввода.

+0

Благодарим вас за предложение. Я попробовал это, к сожалению, это не сработало для меня. –

+0

Вы правы. Это полностью решило проблему. Это не сработало из-за других строк. Это должен быть только один вызов '' 'Qt.inputMethod.reset()' '', ничего другого. Спасибо! –

Смежные вопросы