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

📄 manuvsdock.h

📁 une tres bonne fenetre
💻 H
📖 第 1 页 / 共 2 页
字号:
#include "fene1.h"
#include "image.h"

////////////////////////pour recuperer le nom de fichier

QString nomFichier(QString string)
{
	QString result,alpha;
	for(int i=string.size()-1;i>=0;i--)
		if(string.at(i)!='/')	alpha+=string.at(i);
		else i=-1;
	for(int i=alpha.size()-1;i>=0;i--)	result+=alpha.at(i);
	return result;
}


/////////////ouvrir une image
void fene::ouvrir_une_image()
{
	ouvrir=QFileDialog::getOpenFileName(this,tr("&ouvrir une image "),QString(),tr("Images(*.*)"));
	if(!ouvrir.isEmpty())	
	{
		pixmap=new QPixmap(ouvrir);
		tablabel[ind_label]=new QLabel();
		tablabel[ind_label]->setPixmap(*pixmap);

		QScrollBar *scrollbar=new QScrollBar();

		QScrollArea *scrollarea=new QScrollArea();
		scrollarea->setWidget(tablabel[ind_label]);
		scrollarea->setHorizontalScrollBar(scrollbar);
		scrollarea->setAlignment(Qt::AlignCenter);

		tabwidget->addTab(scrollarea,nomFichier(ouvrir));
		tabwidget->setTabToolTip(ind_label+1,ouvrir);
		tabwidget->widget(ind_label+1);

		tab_pixmap_gauche[ind_label]=new QStack<QPixmap>;
		tab_pixmap_droite[ind_label]=new QStack<QPixmap>;
		tabwidget->setCurrentIndex(ind_label+1);
		ind_label=(ind_label+1)%20;

		dockmanipulation->setVisible(true);
		}
	else QMessageBox::warning(this,tr("avertissement"),tr("vous n'avez pas choisi une image"));
	
}




///////////////////////enregestrer
void fene::enregistrer()
{
	if(!pixmap->isNull())	pixmap->save(tabwidget->tabToolTip(tabwidget->currentIndex()));
	else QMessageBox::warning(this,tr("avertissement"),tr("il y'a aucun image a enregistrer"));
}
void fene::enregistrer_sous()
{
	if(!pixmap->isNull())	pixmap->save(QFileDialog::getSaveFileName(this,tr("&enregistrer une image "),tr("sans titre"),tr("Images(*.png)")));
	else QMessageBox::warning(this,tr("avertissement"),tr("il y'a aucun image a enregistrer"));
}



///////////////charger dans la piles
void fene::charger(QPixmap *pixmap,int tab=1)
{
	if(tab==1)
	{
		tab_pixmap_gauche[tabwidget->currentIndex()-1]->push(*pixmap);
		Annuler->setEnabled(true);
	}
	else
	{
		tab_pixmap_droite[tabwidget->currentIndex()-1]->push(*pixmap);
		Retablir->setEnabled(true);
	}
}

/////////////////////annuler et retablie
void fene::annuler()
{
	charger(pixmap,0);
	*pixmap=tab_pixmap_gauche[tabwidget->currentIndex()-1]->pop();
	if(tab_pixmap_gauche[tabwidget->currentIndex()-1]->isEmpty()) Annuler->setDisabled(true);
	tablabel[tabwidget->currentIndex()-1]->setPixmap(*pixmap);
}
void fene::retablir()
{
	charger(pixmap);
	*pixmap=tab_pixmap_droite[tabwidget->currentIndex()-1]->pop();
	if(tab_pixmap_droite[tabwidget->currentIndex()-1]->isEmpty()) Retablir->setDisabled(true);
	tablabel[tabwidget->currentIndex()-1]->setPixmap(*pixmap);
}



//////////////zoom avant et arriere
void fene::zoomin()
{
	scaleImage(0.8);
}
void fene::zoomout()
{
	scaleImage(1.2);
}
void fene::retabliir()
{
	scaleFactor=1;
	scaleImage(1);
}
void fene::scaleImage(double factor)
{
     scaleFactor *= factor;
	 QPixmap *inter=new QPixmap(*pixmap);
	 tablabel[tabwidget->currentIndex()-1]->resize(scaleFactor *inter->size());
     tablabel[tabwidget->currentIndex()-1]->setPixmap(inter->scaled(scaleFactor*inter->size()));
	 }


/////////selectioner une image
void fene::changerImage(int indice_image)
{
	if(indice_image>0)
	{
		Fermer->setEnabled(true);
		Zoomin->setEnabled(true);
		Zoomout->setEnabled(true);
		Retabliir->setEnabled(true);
		const QPixmap *inter=tablabel[indice_image-1]->pixmap();
		*pixmap=*inter;
		if(tab_pixmap_droite[indice_image-1]->isEmpty()) Retablir->setDisabled(true);
		else	Retablir->setEnabled(true);
		if(tab_pixmap_gauche[indice_image-1]->isEmpty()) Annuler->setDisabled(true);
		else	Annuler->setEnabled(true);
	}
	else 
	{
		if(tabwidget->currentIndex()==0)Fermer->setDisabled(true);
		Retablir->setDisabled(true);
		Annuler->setDisabled(true);
		Zoomin->setDisabled(true);
		Zoomout->setDisabled(true);
		Retabliir->setDisabled(true);
	}
}




////////////////////fermer une image

		
void fene::fermerImage()
{
	if(tabwidget->currentIndex()!=0)
	{
		tab_pixmap_gauche[tabwidget->currentIndex()-1]->clear();
		tab_pixmap_droite[tabwidget->currentIndex()-1]->clear();
		tabwidget->removeTab(tabwidget->currentIndex());
		supprime(tabwidget->currentIndex()-1);
		if(tabwidget->currentIndex()==0) Fermer->setDisabled(true);
		else
		{
			const QPixmap *inter=tablabel[tabwidget->currentIndex()-1]->pixmap();
			*pixmap=*inter;
		}
	}
}
void fene::supprime(int val)
{
	for(int i=val;i<ind_label;i++)
	{
		tablabel[i]=tablabel[i+1];
		ind_label--;
	}

}

///////////////////////////////////////////////////////////////////////////////////////

/////////////////////MANU BAR
void fene::manubarcreate()
{
		////declaration
	QMenu *fichier,*edition,*generer;
						/*	La bar de Menu	*/
	menuBar()->setStatusTip(tr("Pr阾"));
				//fichier
	Ouvrir=new QAction(QIcon("images/ouvrir.ico"),tr("&Ouvrir"),this);
	Ouvrir->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_O));
	Ouvrir->setStatusTip(tr("Ouvrir une image"));
	QObject::connect(Ouvrir,SIGNAL(triggered()),this,SLOT(ouvrir_une_image()));

	Fermer=new QAction(QIcon("images/fermer.ico"),tr("&Fermer"),this);
	Fermer->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_F));
	Fermer->setStatusTip(tr("fermer l'image encours"));
	Fermer->setDisabled(true);
	QObject::connect(Fermer,SIGNAL(triggered()),this,SLOT(fermerImage()));


	Sauvgarder=new QAction(QIcon("images/save.ico"),tr("Enregistrer"),this);
	Sauvgarder->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_S));
	Sauvgarder->setStatusTip(tr("Sauvgarder l'image encours"));
	QObject::connect(Sauvgarder,SIGNAL(triggered()),this,SLOT(enregistrer()));

	Sauvgarder_sous=new QAction(QIcon("images/saveas.png"),tr("Enregistrer sous ..."),this);
	Sauvgarder_sous->setStatusTip(tr("Sauvgarder l'image encours sous ..."));
	QObject::connect(Sauvgarder_sous,SIGNAL(triggered()),this,SLOT(enregistrer_sous()));

	quitter=new QAction(QIcon("images/quitter.ico"),tr("&Quitter"),this);
	quitter->setStatusTip(tr("Quitter le programme"));
	quitter->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Q));
	QObject::connect(quitter,SIGNAL(triggered()),qApp,SLOT(quit()));

	fichier=menuBar()->addMenu(tr("&Fichier"));
	fichier->addAction(Ouvrir);
	fichier->addAction(Fermer);
	fichier->addSeparator();
	fichier->addAction(Sauvgarder);
	fichier->addAction(Sauvgarder_sous);
	fichier->addSeparator();
	fichier->addAction(quitter);
				//**********fin de fichier************//
			//Edition
	Annuler=new QAction(QIcon("images/gauche.ico"),tr("&Annuler"),this);
	Annuler->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Z));
	Annuler->setStatusTip(tr("Retourner en arri閞e"));
	Annuler->setDisabled(true);
	QObject::connect(Annuler,SIGNAL(triggered()),this,SLOT(annuler()));

	Retablir=new QAction(QIcon("images/droite.ico"),tr("&R閠ablir"),this);
	Retablir->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Y));
	Retablir->setStatusTip(tr("Retablir l'image"));
	Retablir->setDisabled(true);
	QObject::connect(Retablir,SIGNAL(triggered()),this,SLOT(retablir()));

	Zoomin=new QAction(QIcon("images/droite.png"),tr("&Zoom Avant"),this);
	Zoomin->setStatusTip(tr("Agrandir l'image"));
	Zoomin->setDisabled(true);
	QObject::connect(Zoomin,SIGNAL(triggered()),this,SLOT(zoomin()));

	Zoomout=new QAction(QIcon("images/droite.png"),tr("&Zoom Arri閞e"),this);
	Zoomout->setStatusTip(tr("R閐uire l'image"));
	Zoomout->setDisabled(true);

⌨️ 快捷键说明

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