asaのブログ

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

Qtチュートリアル9(QPenのカラーと太さの変更)

 描画時の線の太さと色を変える機能を見ていきます。これまでなんとなく流れがつかめてきましたが、QtでGUIを構築する際の流れはMVCモデルに沿うと、UIの作成⇒スロットの接続⇒スロットの実装⇒モデルの実装です。

 

 画面的には次のように選択画面があり、

f:id:asa_r:20170724101155p:plain

カラーダイアログがあり、

f:id:asa_r:20170724101428p:plain

線の太さを決めるスピンボックスがあります。

f:id:asa_r:20170724101513p:plain

 

 メニューとスロットの接続

gist835cd0aa706254396ceaa201f52f4c34

 

 メニューを構築する際に使用するQActionについてですが、これはユーザーが実行する命令をまとめて抽象化したものにあたります。ペンの色を変えることを考えると、この画面にはありませんがツールバーを使用する方法もあります。

 オプションによるカラーの選択やツールバーによるカラーの選択などの"カラーを選択する"命令をQActionクラスは代替することができます。

 参考:QAction Class | Qt Widgets 5.9

 

 スロットはpenColor、penWidthというメソッドにつながっていますので、これを見ていきます。

 

 スロットの実装

gist73e29c1ec12d3b60e09522c379dc600b

 カラーダイアログはQColorDialogからすぐに呼び出すことができます。QColorDoalogクラスにはgetColorメソッドを呼び出しています。引数にQColorが選択されていますが、これはカラーダイアログが最初に示す色(Initial Color)を渡す必要があるからです。

 

 ダイアログでキャンセルを選択すると、途中で選らんだ色は無効になります。これをチェックするため、QColorクラスのisValidメソッドを使って色の有効無効を確認しています。有効なら新しい色をペンにセットします。

 

 インプットダイアログについてはずばりこちらが分かりやすいです。長いですがそこまで複雑なものではありません。

 参考:QInputDialog Class | Qt Widgets 5.9

 

 メソッドの実装

gist24b4aeb6dd2bb375eeb72c51ddf9860e