Qt图像打印

来源:互联网 发布:零基础学算法 第三版 编辑:程序博客网 时间:2024/06/07 05:09

pic_widget.h

[cpp] view plain copy
  1. #ifndef PICWIDGET_H  
  2. #define PICWIDGET_H  
  3.   
  4. #include <QPainter>  
  5. #include <QWidget>  
  6. #include <QPushButton>  
  7. #include <QPrintDialog>  
  8. #include <QPrinter>  
  9. #include <QPainter>  
  10. #include <QRect>  
  11. #include <QImage>  
  12.   
  13. class PicWidget : public QWidget  
  14. {  
  15.     Q_OBJECT  
  16. public:  
  17.     explicit PicWidget(QWidget *parent = 0);  
  18.   
  19.     public slots:  
  20.         void slotPrintPic();  
  21. private:  
  22.     QPushButton *pintPicBtn;  
  23.     QImage img;  
  24. };  
  25.   
  26. #endif  //--PICWIDGET_H  
pic_widget.cpp

[cpp] view plain copy
  1. #include "pic_widget.h"  
  2.   
  3. PicWidget::PicWidget(QWidget *parent /*= 0*/) : QWidget(parent)  
  4. {  
  5.     //---按钮  
  6.     pintPicBtn = new QPushButton("print"this);  
  7.     pintPicBtn->setGeometry(70, 40, 50, 30);  
  8.     connect(pintPicBtn, SIGNAL(clicked()), this, SLOT(slotPrintPic()));  
  9.   
  10.     //--导入图片  
  11.     img.load(":/1");  
  12.   
  13.     //---窗口属性  
  14.     resize(200, 100);  
  15. }  
  16.   
  17. //---按钮槽函数  
  18. void PicWidget::slotPrintPic()  
  19. {  
  20.     QPrinter printer;       //---构建新对象  
  21.     QPrintDialog printDlg(&printer, this);  
  22.     if (printDlg.exec())            // 用于判断用户是否点击“打印”按钮  
  23.     {  
  24.         QPainter painter(&printer);  
  25.         QRect rect = painter.viewport();    //---获取Qpainter对象的矩形区域  
  26.         QSize size = img.size();            //--获取图片的大小  
  27.         size.scale(rect.size(), Qt :: KeepAspectRatio);     //----按照图形比例大小重新设置视口矩形区域  
  28.   
  29.         //---打印图片  
  30.         painter.setViewport(rect.x(), rect.y(), size.width(), size.height());  
  31.         painter.setWindow(img.rect());  
  32.         painter.drawImage(0, 0, img);  
  33.     }  
  34. }  
main.cpp

[cpp] view plain copy
  1. #include <QtWidgets/QApplication>  
  2. #include "pic_widget.h"  
  3.   
  4.   
  5. int main(int argc, char *argv[])  
  6. {  
  7.     QApplication a(argc, argv);  
  8.   
  9.     PicWidget win;  
  10.     win.show();  
  11.       
  12.     return a.exec();  
  13. }