Russian Qt Forum
Ноябрь 23, 2024, 06:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QML + Android vs клавиатура  (Прочитано 6899 раз)
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 результата не приносит

что я не так делаю? как-то реально это решить?
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Декабрь 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.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Dragonic
Гость
« Ответ #2 : Декабрь 08, 2013, 00:38 »

Я решил JNI вызовом.
хм, спасибо.
а нет примера вызова jni в данном случае? Улыбающийся
« Последнее редактирование: Декабрь 08, 2013, 00:59 от Dragonic » Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #3 : Декабрь 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 файл присутствует.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
iLya84a
Гость
« Ответ #4 : Июль 03, 2014, 12:37 »

Скрываю клавиатуру вот так:
Код:
Qt.inputMethod.hide();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 22.