asaのブログ

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

Qtチュートリアル8(画像保存)

 前回の画像表示と同じく、画像保存もMVCモデルが基になってます。

 関連するメソッドは

  • save
  • saveFile
  • saveImage

です。またクラスについては

  • QObject
  • QAction
  • QImage
  • QString

が関わる点を念頭に置くと分かり良いです。

 

 saveスロット

gist8296b075eaaedb077c38c49175d5e1fb

 

 どのファイル形式で保存するのかを受け取ります。ファイル形式は、メニューバーを作るときに羅列する形で展開しています。このときにsetDataメソッドを使ってファイル形式を埋め込んでいます。この埋め込んだファイル形式を取得します。

 senderメソッドを使って送ったシグナルのポインタを返します。これをキャストしてQActionに流します。QActionクラスにはsetDataメソッドで埋め込んだデータを取り出すdataメソッドがあるので、それを使ってファイル形式を取得します。

 ファイル形式を取得したらそれをsaveFileにファイル形式を渡します。

 

 saveFileメソッド

gist93a1918f33288b99c398f4e19b2264e2

 実は画像表示で解説したものとあまり代わりがありません。ファイル名を取得するためにダイアログを表示しています。ダイアログのフィルター部分がコードが込み合ってますが、こちらを参考にされると分かり良いかと思います。

 ・QString Class | Qt Core 5.9

 

 saveImageメソッド

gist46119ceca28d03968951a5ba5e9cc1a8 

 重要な点についてはコメントに記載していますが、とりわけQImageクラスのsaveメソッドが非常に楽に画像保存を可能にしているのがQtのいいところです。