はい、それでは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で実際にプリントされます。)
以上です。
