📄 manuvsdock.h
字号:
#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 + -