zoukankan      html  css  js  c++  java
  • Qt之主窗口设计——打印图像

    printimage.h

    #ifndef PRINTIMAGE_H
    #define PRINTIMAGE_H
    
    #include <QtGui>
    #include <QImage>
    
    
    class PrintImage : public QMainWindow
    {
    	Q_OBJECT
    
    public:
    	PrintImage(QWidget *parent = 0, Qt::WFlags flags = 0);
    	~PrintImage();
    
    	void createActions();
    	void createMenus();
    	void createToolBars();
    
    public slots:
    	void sl_print();
    
    private:
    	QLabel *labImage;
    	QImage image;
    
    	QAction *printAction;
    	QMenu *fileMenu;
    	QToolBar *fileToolBar;
    };
    
    #endif // PRINTIMAGE_H
    

    printimage.cpp

    #include "printimage.h"
    
    
    PrintImage::PrintImage(QWidget *parent, Qt::WFlags flags)
    	: QMainWindow(parent, flags)
    {
    	setWindowTitle(tr("PrintImage"));
    
    	labImage = new QLabel(this);
    	labImage->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
    	labImage->setScaledContents(true);
    	setCentralWidget(labImage);
    
    	createActions();
    	createMenus();
    	createToolBars();
    
    	if(image.load("tux.png"))
    	{
    		labImage->setPixmap(QPixmap::fromImage(image));
    		resize(image.width(),image.height());
    	}
    }
    
    PrintImage::~PrintImage()
    {
    
    }
    
    void PrintImage::createActions()
    {
    	printAction = new QAction(QIcon("images/print.png"),tr("Print"),this);
    	printAction->setShortcut(tr("Ctrl+P"));
    	printAction->setStatusTip(tr("Print Image"));
    	connect(printAction,SIGNAL(triggered()),this,SLOT(sl_print()));
    }
    
    void PrintImage::createMenus()
    {
    	fileMenu = menuBar()->addMenu(tr("File"));
    	fileMenu->addAction(printAction);
    }
    
    void PrintImage::createToolBars()
    {
    	fileToolBar = addToolBar("File");
    	fileToolBar->addAction(printAction);
    }
    
    void PrintImage::sl_print()
    {
    	QPrinter printer;
    	QPrintDialog printDlg(&printer,this);
    	if(printDlg.exec())
    	{
    		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);
    		
    	}
    }
    
  • 相关阅读:
    .net开发微信(1)——微信订阅号的配置
    工作中EF遇到的问题
    .net Entity Framework初识1
    Razor视图
    jquery中利用队列依次执行动画
    .net找List1和List2的差集
    angularjs ng-if 中的ng-model 值作用域问题
    Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题
    springboot 启动排除某些bean 的注入
    angularjs 初始化方法执行两次以及url定义错误导致传值错误问题
  • 原文地址:https://www.cnblogs.com/hanzhaoxin/p/2786453.html
Copyright © 2011-2022 走看看