Виртуальная клавиатура в Symbian S60 5-е издание: какой API использовать? - PullRequest
6 голосов
/ 21 ноября 2008

Как (то есть с использованием какого API) открывается виртуальная клавиатура на Symbian S60 5th edition? В документации, похоже, нет информации об этом.

Ответы [ 3 ]

4 голосов
/ 22 ноября 2008

Вы правы, это, очевидно, должен быть опубликованный API, и это должно быть выделено в документации. Нет такой удачи.

  • Если вы используете один из собственных элементов управления платформы, виртуальная клавиатура автоматически всплывает, когда пользователь получает доступ к элементу управления для редактирования текста.

  • Если вы создаете пользовательский элемент управления, вам нужно разобраться с его выбором, добавив свою собственную версию виртуальной клавиатуры: создайте новый пользовательский элемент управления виртуальной клавиатуры для редактирования текста, похожий на окно, с помощью правые кнопки. Повторно используйте его во всех ваших приложениях. Однажды Nokia поймет, что они совершили очевидную ошибку, и сделает API общедоступным.

  • Если вы используете прямой доступ к экрану, вы не должны ожидать, что виртуальная клавиатура, похожая на s60, выскочит из ниоткуда. Снова нарисуйте красивое изображение на экране, чтобы пользователь знал, где находятся виртуальные клавиши, и реагировал на события указателя. Это будет менее пригодно для повторного использования, если вы не добавите в него достаточное количество настроек (фон, края кнопок ...).

РЕДАКТИРОВАТЬ: Nokia может полагаться на Qt, чтобы решить эту проблему. Я ожидаю, что этот элемент управления будет частью текущей версии Qt 4.7.

3 голосов
/ 30 ноября 2010

Работая с фокусом на QLineEdit внутри пользовательской кодированной области кинетической прокрутки, у меня возникла схожая проблема (как открыть виртуальную клавиатуру вручную). Затем я обнаружил, что это очевидно работает в Qt 4.6.3 на телефоне C7 Symbian ^ 3:

// lineEdit is an instance of QLineEdit    
QApplication::postEvent(lineEdit, new QEvent(QEvent::RequestSoftwareInputPanel));

До этого мне также приходилось публиковать событие QEvent :: FocusIn в том же lineedit, в противном случае QLineEdit не обновлял содержимое с виртуальной клавиатуры.

Надеюсь, это полезно. Я потерял часы.

1 голос
/ 03 января 2011

Спасибо, Тихи, очень полезный совет! Также может быть вызвано событие «закрыть виртуальную клавиатуру»:

QApplication::postEvent(lineEdit, new QEvent(QEvent::CloseSoftwareInputPanel));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...