⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgprocessor.cpp

📁 Linux窗口程序设计__Qt4精彩实例分析上面的源代码第二部分.以循序渐进的方式进行源代码,包括Qt4下面的图形与图画对话框QMainWindow的源代码.
💻 CPP
字号:
#include "imgprocessor.h"ImgProcessor::ImgProcessor()    : QMainWindow(){      QFont f("ZYSong18030",12);    setFont(f);    		      setWindowTitle(tr("Image Processor"));        imageLabel = new QLabel(this);        imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);    imageLabel->setScaledContents(true);       setCentralWidget(imageLabel);        createActions();    createMenus();    createToolBars();}ImgProcessor::~ImgProcessor(){}void ImgProcessor::createActions(){	    // open file action    openFileAction = new QAction(QIcon(":/images/openfile.png"),tr("Open"),this);    openFileAction->setShortcut(tr("Ctrl+O"));    openFileAction->setStatusTip(tr("Open File"));    connect(openFileAction,SIGNAL(triggered()),this,SLOT(slotOpenFile()));    // zoom in action    zoomInAction = new QAction(QIcon(":/images/zoomin.png"),tr("ZoomIn"),this);    zoomInAction->setShortcut(tr("PgUp"));    zoomInAction->setStatusTip(tr("Zoom In"));    connect(zoomInAction,SIGNAL(triggered()),this,SLOT(slotZoomIn()));    // zoom out action    zoomOutAction = new QAction(QIcon(":/images/zoomout.png"),tr("ZoomOut"),this);    zoomOutAction->setShortcut(tr("PgDown"));    zoomOutAction->setStatusTip(tr("Zoom Out"));    connect(zoomOutAction,SIGNAL(triggered()),this,SLOT(slotZoomOut()));    // rotate 90 action    rotate90Action = new QAction(QIcon(":/images/rotate90.png"),tr("Rotate90"), this);    rotate90Action->setShortcut(tr("Ctrl+Right"));    rotate90Action->setStatusTip(tr("Rotate 90"));    connect(rotate90Action, SIGNAL(triggered()), this, SLOT(slotRotate90()));    // rotate 180 action    rotate180Action = new QAction(QIcon(":/images/rotate180.png"),tr("Rotate180"), this);    rotate180Action->setShortcut(tr("Ctrl+Down"));    rotate180Action->setStatusTip(tr("Rotate 180"));    connect(rotate180Action, SIGNAL(triggered()), this, SLOT(slotRotate180()));        // rotate 270 action    rotate270Action = new QAction(QIcon(":/images/rotate270.png"),tr("Rotate270"), this);    rotate270Action->setShortcut(tr("Ctrl+Left"));    rotate270Action->setStatusTip(tr("Rotate 270"));    connect(rotate270Action, SIGNAL(triggered()), this, SLOT(slotRotate270()));        // mirror vertical action    mirrorVerticalAction = new QAction(QIcon(":/images/mirrorvertical.png"),tr("MirrorVertical"), this);    mirrorVerticalAction->setShortcut(tr("Ctrl+V"));    mirrorVerticalAction->setStatusTip(tr("Mirror Vertical"));    connect(mirrorVerticalAction, SIGNAL(triggered()), this, SLOT(slotMirrorVertical()));     // mirror horizontal action    mirrorHorizontalAction = new QAction(QIcon(":/images/mirrorhorizontal.png"),tr("MirrorHorizontal"), this);    mirrorHorizontalAction->setShortcut(tr("Ctrl+H"));    mirrorHorizontalAction->setStatusTip(tr("Mirror Horizontal"));    connect(mirrorHorizontalAction, SIGNAL(triggered()), this, SLOT(slotMirrorHorizontal())); }void ImgProcessor::createMenus(){    fileMenu = menuBar()->addMenu(tr("File"));    zoomMenu = menuBar()->addMenu(tr("Zoom"));    rotateMenu = menuBar()->addMenu(tr("rotate"));    mirrorMenu = menuBar()->addMenu(tr("mirror"));        fileMenu->addAction(openFileAction);    zoomMenu->addAction(zoomInAction);    zoomMenu->addAction(zoomOutAction);    rotateMenu->addAction(rotate90Action);    rotateMenu->addAction(rotate180Action);    rotateMenu->addAction(rotate270Action);    mirrorMenu->addAction(mirrorVerticalAction);    mirrorMenu->addAction(mirrorHorizontalAction);}void ImgProcessor::createToolBars(){    fileTool = addToolBar("File");    zoomTool = addToolBar("Zoom");    rotateTool = addToolBar("Rotate");    mirrorTool = addToolBar("Mirror");        fileTool->addAction(openFileAction);        zoomTool->addAction(zoomInAction);    zoomTool->addAction(zoomOutAction);        rotateTool->addAction(rotate90Action);       rotateTool->addAction(rotate180Action);       rotateTool->addAction(rotate270Action);           mirrorTool->addAction(mirrorVerticalAction);       mirrorTool->addAction(mirrorHorizontalAction);   }void ImgProcessor::slotOpenFile (){    QString s = QFileDialog::getOpenFileName(               	this, "open image file",        ".",        "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)");                    if(s != "")    {    	if(img.load(s));    	{    		imageLabel->setPixmap (QPixmap::fromImage(img));    		resize(img.width(), img.height());    	}    }}void ImgProcessor::slotZoomIn (){	if(img.isNull())	{		return;	}	QMatrix martix;	martix.scale (2,2);  	img=img.transformed(martix);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height());  	}void ImgProcessor::slotZoomOut (){	if(img.isNull())	{		return;	}	QMatrix martix;	martix.scale(0.5,0.5);  	img=img.transformed(martix);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height());}void ImgProcessor::slotRotate90 (){	if(img.isNull())	{		return;	}	QMatrix martix;	martix.rotate(90);  	img=img.transformed(martix);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height());}void ImgProcessor::slotRotate180 (){	if(img.isNull())	{		return;	}	QMatrix martix;	martix.rotate(180);  	img=img.transformed(martix);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height());}void ImgProcessor::slotRotate270 (){	if(img.isNull())	{		return;	}	QMatrix martix;	martix.rotate(270);  	img=img.transformed(martix);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height()); }void ImgProcessor::slotMirrorVertical (){	if(img.isNull())	{		return;	}	img=img.mirrored(false,true);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height()); }void ImgProcessor::slotMirrorHorizontal (){	if(img.isNull())	{		return;	} 	img=img.mirrored(true,false);	imageLabel->setPixmap (QPixmap::fromImage(img));	resize(img.width(),img.height()); }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -