前回に引き続き今回も参加したので参加報告を記す。また,今回の勉強会では発表したので,それについても記す。
概要
項目 | 内容 |
---|---|
イベント名 | Qt 勉強会 @ Tokyo #62 |
URL | https://qt-users.connpass.com/event/97166/ |
ハッシュタグ | #qtjp |
主催者 | 日本Qtユーザー会 |
開催地 | 東京都新宿区新宿1-23-1 新宿マルネビル9F |
開催日時 | 2018-08-18 13:00-18:00 |
参加人数 | 10 |
SNS | https://social.senooken.jp/conversation/96957 |
項目 | 内容 |
---|---|
演題 | Qt Quickでのタブページの実装に手こずった話 |
スライド | https://senooken.jp/public/20180818/slide/ |
動画 | https://senooken.jp/public/20180818/movie/ |
経緯
前回の勉強会で,今後の自分のアプリケーション開発で必要な要素であるタブページの実装に挑戦した。Qtに用意されている部品を組み合わせるだけだから,きっと簡単にできるのだろうと期待していた。しかし,実際はかなりの試行錯誤が必要であり,しかもバグが残った状態で,不本意な結果となった。
自分が挑戦した限り,ネット上にはQt Quick Controls 2でタブページの実装に挑戦した事例はなかった。そのため,同種の問題の解決の手がかりにするため,また今回遭遇した問題の解消方法を探るために,何をどうやったのか,何が問題だったのかを発表することにした。
内容
発表資料の目次のとおり,以下の内容を話した。
- タブページとはどういうものか
- Qtでの開発体制
- Qt Quick Controls 2での具体的な実装方法
- 課題
2. のQtでの開発体制で,Qtの開発パターンを紹介したのは自分の頭の整理にもなった。Qtの勉強を始めた当初,Qt Widgets,Qt Quick,Qt Quick Controlsの関係がイマイチ理解できず,Qt Quick Controlsに関しては,1と2がありややこしかった。Qt 5.11になってQt Quick Controls 1が廃止予定扱いになったこともあり,いいタイミングだったのかもしれない。
タブページの実装では,オブジェクトの動的生成・削除,マウスドラッグなど少し応用的な内容を含んでいる。マウスの現在位置に応じて処理を変える必要があり,意外と複雑だ。
作業内容
今回の勉強会での作業内容は,発表に対するコメントと次の課題であるQt Widgetsでのタブページの実装への着手,資料の収集だった。
発表で課題としたことについて,初参加の方から助言をいただけた。
- 4.1の座標がおかしくなる問題: 他の処理が干渉しているのではないか?ドラッグだけ有効にして,ドラッグ中は他の機能を無効にしてはどうか?
- 4.3のQt 5.11で文字が被る問題: Qt 5.10と5.11とでオブジェクトのデフォルト値が変わっているのではないか?例えば,背景の色や透明度が違うなど。
- TabBarとSwipeViewとで二重にタブページの追加,削除を管理しないといけない件については,このグループを一つのクラスでまとめるという方法がある。
デフォルト値が変わっている件については,背景色を変えたり試してみたが,違いがなく,結局解決の手がかりがつかめなかった。GUIだと,マウスや他の要素が干渉しあっており,再現確認もしにくいのでやっかいだと感じた。
また,幹事のhermit4さんが先日のコミケで「qmake入門増補改訂版」をリリースしており,この勉強会でも展開していたので,1500円で購入した。発表以外での本日最大の作業成果だった。電子版も付属しているのがありがたかった。
その他,いよいよQtの本丸ともいえるQt Widgetsに手を出すことになるので,オライリーの「実践 Qt 4プログラミング」を購入した。「入門 Qt 4 プログラミング」はQtに興味を持った3年前の時点で購入したのだが,実践のほうはまだ早いと思って購入していなかった。Qt 4とバージョンが一つ前なのが気がかりではあるが,Qt WigetsはQt 4でも5でも内容がそんなに大きく変わらないので,Qt 4の本でも通用するらしい。というより,Qt 5のQt Wigetsの本は少なくとも日本語では皆無のため,Qt 4の本にあたるしかないというのが実情だ。
そして,肝心のQt Widgetsのタブページの実装についてだが,QTabWidgetを使えばいけそうというくらいしか情報がなく,Qt Quickでのタブページの実装と同じで,また試行錯誤しながらの挑戦になる。もっとも,今度はC++でのQtの開発方法も勉強する必要があるため,手ごわそうだ。
結論
今回の勉強会では,Qt Quickでのタブページの実装方法について発表できたのが,最大の成果だった。試行錯誤してやっとわかったところでもあるので,なんらかの形で公開できたのはよかった。そうでなければ,努力が報われないまま終わってしまい,後から挑戦する人にももったいないことだろう。
なんとなく感じていたが,Qt QuickはQt 5から登場したのもあり,安定性,応用性に欠けるのではないかという不安がある。Qt WidgetsでQt Quickで挑戦した課題に取り組み,お互いの実装方法を比較して,今後どちらをどう使って開発を進めていくのか検討したい。