QGraphicViewを使って画像ファイルを表示してみる。

手順はこんな感じだ。

  • 画像ファイルを読み込む。
  • 画像をQGraphicsPixmapItemに変換する。
  • 画像(QGraphicsPixmapItem)をシーン(QGraphicsScene)に追加する。
  • グラフィックスビュー(QGraphicsView)にシーンを設定する。

ちょうど、QGraphicsViewが額縁やフォトフレーム、QGraphicsSceneがキャンバスや写真、QGraphicsPixmapItemはキャンバスに描かれたり、写真に撮られたりする物になる。QGraphicsPixmapItemの部分は正確にはQGraphicsItemを継承したクラスのインスタンスが使え、矩形やポリゴンなどもある。

Widgetのプロジェクトを作成する。
UIにGraphics Viewとボタンを貼る。ボタンを押したらC:\tmp\hoge.pngを読み込んで表示するようにしたいと思う。
WidgetクラスにQGraphicsSceneを追加する。

    QGraphicsScene scene;

ボタンを押した時の処理を次のようにする。

    // イメージファイルを読み込む
    QImage image("c:\\tmp\\hoge.png");

    // イメージをシーンに追加する。
    QGraphicsPixmapItem *image_item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
    scene.addItem(image_item);

    // シーンをQGraphicsViewに設定する。
    ui->graphicsView->setScene(&scene);