Russian Qt Forum

Qt => Qt Embedded => Тема начата: Dragonic от Декабрь 07, 2013, 20:42



Название: QML + Android vs клавиатура
Отправлено: Dragonic от Декабрь 07, 2013, 20:42
приветствую!
возникла проблема - не выходит убрать виртуальную клавиатуру

Код
Javascript
import QtQuick 2.0
 
Rectangle {
   width: 360
   height: 360
 
   TextInput {
       anchors.centerIn: parent
       id: textInput
       text: "Hello!"
       focus: true
 
       MouseArea {
           anchors.fill: parent
           onClicked: {
               console.log(textInput.activeFocus)
               textInput.focus = false
           }
       }
   }
}

поведение:
0. Qt 5.2.0
1. при запуске показывает клавиатуру (textInput.focus: true).
2. при нажатии происходит исчезновение фокуса (textInput.focus = false)

ожидание: исчезновение виртуальной клавиатуры Android
реальность: клавиатура остается

попытка использовать InputMethod.hide/visible результата не приносит

что я не так делаю? как-то реально это решить?


Название: Re: QML + Android vs клавиатура
Отправлено: kibsoft от Декабрь 08, 2013, 00:30
Я решил JNI вызовом.
Вот такой метод добавил в QtActivity.
Код:
public void hideKeyboard()
{
   InputMethodManager inputMethodManager = (InputMethodManager)  this.getSystemService(Activity.INPUT_METHOD_SERVICE);
   inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
}

Я делал еще в 5.1, сейчас в 5.2 можно сделать через QAndroidJniObject.


Название: Re: QML + Android vs клавиатура
Отправлено: Dragonic от Декабрь 08, 2013, 00:38
Я решил JNI вызовом.
хм, спасибо.
а нет примера вызова jni в данном случае? :)


Название: Re: QML + Android vs клавиатура
Отправлено: kibsoft от Декабрь 08, 2013, 00:59
Если Qt 5.2, тогда в Qt Creator в настройках проекта жмем "Create AndroidManifest.xml". После этого создаем YourActivityName.java в которое наследуемся от QtActivity и добавляем туда свой метод. В AndroidManifest.xml нужно прописать свою активити вместо QtActivity. Вообще пример тут: http://doc-snapshot.qt-project.org/qdoc/qtandroidextras-notification-android-sources-androidmanifest-xml.html
А лучше ищите этот проект в каталоге Qt, т.к. там еще java файл присутствует.


Название: Re: QML + Android vs клавиатура
Отправлено: iLya84a от Июль 03, 2014, 12:37
Скрываю клавиатуру вот так:
Код:
Qt.inputMethod.hide();