Qt学习之路之图像打印

来源:互联网 发布:金牛考勤软件电话 编辑:程序博客网 时间:2024/05/20 16:13

首先,设置工程文件:QT += printsupport

  打印图像实际实在一个QPaintDevice中画图。打印创建QPrinter对象进行画图,QPrinter本质上也是一个绘图设备QPaintDevice。

~~~~~上代码~~~~

pic_widget.h

#ifndef PICWIDGET_H#define PICWIDGET_H#include <QPainter>#include <QWidget>#include <QPushButton>#include <QPrintDialog>#include <QPrinter>#include <QPainter>#include <QRect>#include <QImage>class PicWidget : public QWidget{Q_OBJECTpublic:explicit PicWidget(QWidget *parent = 0);public slots:void slotPrintPic();private:QPushButton *pintPicBtn;QImage img;};#endif//--PICWIDGET_H
pic_widget.cpp

#include "pic_widget.h"PicWidget::PicWidget(QWidget *parent /*= 0*/) : QWidget(parent){//---按钮pintPicBtn = new QPushButton("print", this);pintPicBtn->setGeometry(70, 40, 50, 30);connect(pintPicBtn, SIGNAL(clicked()), this, SLOT(slotPrintPic()));//--导入图片img.load(":/1");//---窗口属性resize(200, 100);}//---按钮槽函数void PicWidget::slotPrintPic(){QPrinter printer;//---构建新对象QPrintDialog printDlg(&printer, this);if (printDlg.exec())// 用于判断用户是否点击“打印”按钮{QPainter painter(&printer);QRect rect = painter.viewport();//---获取Qpainter对象的矩形区域QSize size = img.size();//--获取图片的大小size.scale(rect.size(), Qt :: KeepAspectRatio);//----按照图形比例大小重新设置视口矩形区域//---打印图片painter.setViewport(rect.x(), rect.y(), size.width(), size.height());painter.setWindow(img.rect());painter.drawImage(0, 0, img);}}
main.cpp

#include <QtWidgets/QApplication>#include "pic_widget.h"int main(int argc, char *argv[]){QApplication a(argc, argv);PicWidget win;win.show();return a.exec();}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 0