Qt之主窗口设计——打印图像

简介:

printimage.h

  1. #ifndef PRINTIMAGE_H  
  2. #define PRINTIMAGE_H  
  3.   
  4. #include <QtGui>  
  5. #include <QImage>  
  6.   
  7.   
  8. class PrintImage : public QMainWindow  
  9. {  
  10.     Q_OBJECT  
  11.   
  12. public:  
  13.     PrintImage(QWidget *parent = 0, Qt::WFlags flags = 0);  
  14.     ~PrintImage();  
  15.   
  16.     void createActions();  
  17.     void createMenus();  
  18.     void createToolBars();  
  19.   
  20. public slots:  
  21.     void sl_print();  
  22.   
  23. private:  
  24.     QLabel *labImage;  
  25.     QImage image;  
  26.   
  27.     QAction *printAction;  
  28.     QMenu *fileMenu;  
  29.     QToolBar *fileToolBar;  
  30. };  
  31.   
  32. #endif // PRINTIMAGE_H  

printimage.cpp

  1. #include "printimage.h"  
  2.   
  3.   
  4. PrintImage::PrintImage(QWidget *parent, Qt::WFlags flags)  
  5.     : QMainWindow(parent, flags)  
  6. {  
  7.     setWindowTitle(tr("PrintImage"));  
  8.   
  9.     labImage = new QLabel(this);  
  10.     labImage->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);  
  11.     labImage->setScaledContents(true);  
  12.     setCentralWidget(labImage);  
  13.   
  14.     createActions();  
  15.     createMenus();  
  16.     createToolBars();  
  17.   
  18.     if(image.load("tux.png"))  
  19.     {  
  20.         labImage->setPixmap(QPixmap::fromImage(image));  
  21.         resize(image.width(),image.height());  
  22.     }  
  23. }  
  24.   
  25. PrintImage::~PrintImage()  
  26. {  
  27.   
  28. }  
  29.   
  30. void PrintImage::createActions()  
  31. {  
  32.     printAction = new QAction(QIcon("images/print.png"),tr("Print"),this);  
  33.     printAction->setShortcut(tr("Ctrl+P"));  
  34.     printAction->setStatusTip(tr("Print Image"));  
  35.     connect(printAction,SIGNAL(triggered()),this,SLOT(sl_print()));  
  36. }  
  37.   
  38. void PrintImage::createMenus()  
  39. {  
  40.     fileMenu = menuBar()->addMenu(tr("File"));  
  41.     fileMenu->addAction(printAction);  
  42. }  
  43.   
  44. void PrintImage::createToolBars()  
  45. {  
  46.     fileToolBar = addToolBar("File");  
  47.     fileToolBar->addAction(printAction);  
  48. }  
  49.   
  50. void PrintImage::sl_print()  
  51. {  
  52.     QPrinter printer;  
  53.     QPrintDialog printDlg(&printer,this);  
  54.     if(printDlg.exec())  
  55.     {  
  56.         QPainter painter(&printer);       
  57.         QRect rect = painter.viewport();      
  58.         QSize size = image.size();  
  59.         size.scale(rect.size(),Qt::KeepAspectRatio);  
  60.         painter.setViewport(rect.x(),rect.y(),size.width(),size.height());  
  61.         painter.setWindow(image.rect());  
  62.         painter.drawImage(0,0,image);  
  63.           
  64.     }  
  65. }  
作者: 韩兆新
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:  [02]Qt语言基础
标签:  Qt学习笔记

本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/24/2786453.html,如需转载请自行联系原作者
目录
相关文章
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
2628 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
C++ Windows
Qt 窗口置顶
Qt 窗口置顶
608 1
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
4431 4
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
1495 4
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
965 4
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
3101 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
1752 3
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
746 3
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
3125 3