はい、それではQPrinter、QPrintDialogを使った画像の印刷をやっていきます。
サンプルはC++ GUI Programming with Qt4の191ページのコードを少し変更して使います。
そして、いつものようにQtCreaterなどでMainWindowなどのGUI部品を定義済みであるとします。(QtCreaterなどの使い方は ”Qtをはじめよう" を見てください。)
ではコードを
void MainWindow::on_pushButton_clicked()//ボタンクリックスロット { QImage image("//home//ubuntu001//thumbnail.jpg");//印刷するイメージ QPrinter printer(QPrinter::ScreenResolution);//プリンター描画のためのペイントデバイス QPrintDialog printDialog(&printer, this);//印刷するかどうかのダイアログ表示 if(printDialog.exec() == QDialog::Accepted)//OKなら印刷 { QPainter painter(&printer); QRect rect = painter.viewport(); QSize size = image.size(); size.scale(rect.size(), Qt::KeepAspectRatio);//縦横比維持 painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); painter.setWindow(image.rect()); painter.drawImage(0, 0, image); } }
はい、簡単ですね。まず印刷用のイメージのを作成します。その後プリンター描画のためのペイントデバイスとなるQPrinterを作成し、QPrintDialogにセットし印刷するかどうかの確認ダイアログを表示しています。QPrinter::ScreenResolutionなどの値はリファレンスを参照してください。(リファレンス)
QDialog::Accepted(つまりOKってこと)ならば印刷を開始します。
描画のためQPainterに先ほどのprinter(QPrinter)をセットします。そして、painterのビューポートと画像のサイズを取得し、ビューポート、ウィンドウを変更し印刷しています。
(ちなみにビューポートとは物理座標矩形領域、ウィンドウは論理座標矩形領域です。)
実行すると以下のようになります。(Printで実際にプリントされます。)
以上です。