タッチパネル向けの実装 その3
前回はQFrameの中にボタンを並べてキーボードっぽいものを試しに作ってみましたが、Qt Assistantで調べてみるとQFrameはQWidgetという基本クラスにスクロールエリアやスプリッターなどの機能が追加されたものらしいので、キーボードをシミュレートする基本部品を作るという意味ではQWidgetをベースにした方がよさそうです。
ということで、Qt Designerを立ち上げなおして、まず前回作ったQFrameベースの保存ファイルを開きます。で、「ファイル」メニューから「新規」を選んで次に"templates\forms"から"Widget"を選んで新たなFormを作成します。
ここで前回作ったQFrameベース上の部品を全選択してから今回新しく作ったWidgetベースのFormへコピー&ペーストしました。
上がQFrameベース、下がQWidgetベースです。
新たに作ったFormを保存します。名前はGUI\software_keyboard.uiとしました。
これをQt Brynhildrに組み込んで使えるようにするために、プロジェクトファイルであるqtbrynhildr.proに追加します。
FORMS += GUI/software_keyboard.ui
で、qmakeを実行してからmakeを実行すると
ui_software_keyboard.h
というファイルが新たに出来上がりました。これがソフトウェアキーボード実装に必要な大元のファイルとなります。
ただし、実際に表示するにはもう一手間かかりますけど。
まだレイアウトに関しては初期値なのでそこも要検討なのですが、それ以外にも検討が必要そうな点が幾つかありますね。細かいレイアウトは後で調整できるので、機能的に必要な部分を先に検討します。
1. キー(ボタン)が押された時の振る舞い(signal/slotの定義)
簡単にいうとキーが押された時にどういう名前の関数が呼ばれるか、でしょうか。名前を決めるだけ、という気がしないでもないですが。
2. キーボードのキーレイアウトの切り替え
日本語キーボードレイアウトと英語キーボードレイアウトとか、あとシフトキーを押した状態と押していない状態などの切り替えとかも仕組みが必要ですね。
Qtが生成してくれたui_software_keyboard.hというファイルの中身を読むとなんかヒントになりそうです。
まずは作ったソフトウェアキーボードのプロトタイプをQt Brynhildrにオーバーラップ表示できるようにしてみましょうか。(不要な時は非表示にできるようにしたいですね)
と思いましたが、オーバラップ表示させる前にとりあえずデスクトップ表示用ウィジェットの代わりに暫定版ソフトウェアキーボードを載せてみました。
デスクトップ表示用ウィジェットを外したので画面は見えませんが、ソフトウェアキーボードの動作テストはこれでできそうです。(キー(ボタン)と背景色が同じなので分かりにくいですね…)
« タッチパネル向けの実装 その2 | トップページ | タッチパネル向けの実装 その4 »
コメント