Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Qt5 の Input Method

12,357 views

Published on

Qt5 の Input Method の概要。

Published in: Technology

Qt5 の Input Method

  1. 1. Qt5のInput Method 朝木卓見 1
  2. 2. Qt4からQt5へ• Qt4では各プラットフォームでIMに(も)個別対応 • QPAによる抽象化 • QWidget依存からの脱却が必要• デスクトップ全盛期はIMの重要度が低かった • ユーザーが入力するだけ(アプリから制御出来ない) • 旧APIは自由度・拡張性・抽象度が低い• モバイルの躍進でIMへの需要が高まる • アプリからの制御・アプリとの連携が必要に 2
  3. 3. Qt4のInput Method Application QtGuiQInputMethodEvent QInputContext Qt GUI Windows Mac OS X X11 QWS IMM32 NSTextInput immodule QWSInputMethod scim ibus uim 3
  4. 4. Qt4のAPI• Qt::WA_InputMethodEnabled• QInputContext• QInputMethodEvent• QWidget::inputMethodQuery() IMの制御は• QWidget::inputMethodHints (4.6) 4.6から• QEvent::RequestSoftwareInputPanel (4.6)• QEvent::CloseSoftwareInputPanel (4.6) 4
  5. 5. Qt5の主な変化• QInputContextクラスを整理 • QPlatformInputContextとQInputMethodに分割 • システム向けとアプリ向け • QWidget依存を取り除く • アプリとの連携を視野に 5
  6. 6. QPlatformInputContext• 各プラットフォームのInput MethodをQtにインテグ レーションするためのクラス • qtbase/src/platforms/* • qtbase/src/plugins/platforminputcontexts/* (X11) • QWidget非依存 • QPA用API • 非アプリ向け • ソース・バイナリ互換維持の対象外 6
  7. 7. QInputMethod• アプリとInput Methodが連携するためのAPI • http://qt-project.org/doc/qt-5.0/qtgui/qinputmethod.html• show(), hide()• keyboardRectangle() 7
  8. 8. InputMethodQuery• Input Methodからアプリへの問い合わせ • カーソル、フォント、サラウンドテキスト等• Qt4 • QWidget::inputMethodQuery()• Qt5 • QInputMethodQueryEvent 8
  9. 9. Qt5のInput Method ApplicationQInputMethodEvent QInputMethod QPlatformAbstraction QPlatformInputContext Windows Mac OS X ibus Mallit IMM32 NSTextInput Client 9
  10. 10. Qt5のAPI• Qt::WA_InputMethodEnabled• QPlatformInputContext (QPA API)• QInputMethod• QApplication::autoSipEnabled (Software Input Panel)• QInputMethodEvent• QInputMethodQueryEvent• QWidget::inputMethodHints (値の追加あり)• QEvent::RequestSoftwareInputPanel• QEvent::CloseSoftwareInputPanel 10
  11. 11. Qt Quick 2• inputMethodHintsプロパティの追加 • TextInput • TextEdit• Qt.inputMethodプロパティ 11
  12. 12. まとめ• APIが大きく変更(主に以下のケースに影響) • Input Methodを実装する場合 • 細かな制御が必要な場合• 実装は? • 要確認 12
  13. 13. 参考文献• Create proper input method abstraction and expose it through a public API in QTGui• Expose new QInputPanel API as global property Qt.application.inputPanel• http://qt-project.org/groups/qt-contributors- summit-2011/wiki/ Input_methods_and_Wayland_in_Qt_5• 注) QInputMethodはQInputPanelという名前でした 13

×