asaのブログ

プログラミングの勉強まとめ

Qtチュートリアル6(保存、ペンの太さ、色の実装)

 Qtでざっくりと絵を描くアプリを作ります。基本的な機能として保存、開く、ペンの太さ、色の選択を実装しています。今回はQtのサンプルを参考にしています。これにしばらくアンドゥなどの機能やOpenGLを載せていきたいと思います。

 

 少し長くなるので、詳細な機能については個別に見ていきます。実際に動作させてみると下のような感じになります。

 

f:id:asa_r:20170718224137p:plain

 

 UIについて

 UIは今回QMainWindowを使用しています。メニューにFileとOptionを追加しています。MainWindowはレイアウトを保持したクラスで簡単にGUIを構築することができます。

f:id:asa_r:20170718224414p:plain

 

 ところで、QtにおけるUIはどのような仕組みになっているのでしょうか。また、Qtで開発するときにインクルードするQtWidgetsとは何者でしょうか。

 

 QtにおけるUI構築はQt5以降とそれ以前で異なっています。Qt5以降ではQMLにおける構築が追加され、JavaScriptによる制御も可能になりました。これはこれまでの古典的なデスクトップUIから、新たにアニメーション等に対応するためのものです。

 

 対してQtWidgetは古典的なUIを構築するためのパーツのことです。今回のアプリはこのQWidgetに対して直接描画しています。なぜそんなことができるのかというとQWidgetは描画機能を持ったQPaintDeviceクラスを継承しているからだったりします。

 公式サイトが丁寧に書かれていて参考になります。

 ・User Interfaces | Qt 5.9

 ・QPaintDevice Class | Qt GUI 5.9

 

 コード

 少し長くなりますので、詳細は次以降断片的に見ていくことにします。

gist0a0e1ed84820d6e38d62913d07fbfe51