#include "ZkEdit.h" #include "ui_zkedit.h" #include "SysPara.h" #include #include #include ZkEdit::ZkEdit(QWidget *parent) : QWidget(parent), ui(new Ui::ZkEdit) { ui->setupUi(this); fileDialog = 0; openedFileName = ""; newFileAppending = false; connect(ui->widgetPic,SIGNAL(picWidgetModify(int ,int )),this,SLOT(enableSaveButton(int ,int ))); connect(ui->checkBoxPicExpand,SIGNAL(clicked(bool)),this,SLOT(oncheckboxExpandClicked(bool))); connect(ui->checkBoxTrimPic,SIGNAL(clicked(bool)),this,SLOT(oncheckboxTrimPicClicked(bool))); ui->pushButtonSave->setEnabled(false); forcePicWidgetSize = false; #ifdef MYSAVEFILEDLG dialogSaveFile =new DialogSaveFile(0); #endif connect(ui->spinBoxHeightPoint, QOverload::of(&QSpinBox::valueChanged), this, &ZkEdit::onSizeSpinBoxChanged); connect(ui->spinBoxWidthPoint, QOverload::of(&QSpinBox::valueChanged), this, &ZkEdit::onSizeSpinBoxChanged); } ZkEdit::~ZkEdit() { delete ui; #ifdef MYSAVEFILEDLG if(dialogSaveFile) delete dialogSaveFile; #endif if(fileDialog) delete fileDialog; } void ZkEdit::onSizeSpinBoxChanged(int) { // TODO:: 可能需要响应大小更改 } void ZkEdit::oncheckboxExpandClicked(bool) { ui->checkBoxTrimPic->setCheckState(Qt::Unchecked); } void ZkEdit::oncheckboxTrimPicClicked(bool) { ui->checkBoxPicExpand->setCheckState(Qt::Unchecked); } void ZkEdit::on_closeBtn_clicked() { hide(); } void ZkEdit::showEvent(QShowEvent *e) { ui->spinBoxHeightPoint->setValue(12); ui->spinBoxWidthPoint->setValue(12); ui->widgetPic->initWidget(ui->spinBoxWidthPoint->value(),ui->spinBoxHeightPoint->value()); openedFileName = ""; ui->labelFileName->clear(); ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue())); QWidget::showEvent(e); } void ZkEdit::checkNewFileAppending(){ if(newFileAppending){ ui->widgetPic->initWidget(ui->spinBoxWidthPoint->value(),ui->spinBoxHeightPoint->value()); openedFileName = ""; } newFileAppending = false; } void ZkEdit::onSave_File_reject(){ checkNewFileAppending(); } bool ZkEdit::maybeSave(){ if(!ui->widgetPic->isModified()) return true; QMessageBox msgBox(QMessageBox::Information,tr("提示"),tr("图片已经改变,是否保存?")); QPushButton *saveButton = msgBox.addButton(tr("保存"), QMessageBox::ActionRole); QPushButton *cancleSaveButton = msgBox.addButton(tr("放弃保存"), QMessageBox::ActionRole); QPushButton *abortButton = msgBox.addButton(QMessageBox::Cancel); msgBox.exec(); if (msgBox.clickedButton() == saveButton) { newFileAppending = true; on_pushButtonSave_clicked(); return false; } else if (msgBox.clickedButton() == cancleSaveButton) { return true; } else return false; return true; } void ZkEdit::on_pushButtonNew_pressed(){ if(maybeSave()){ ui->widgetPic->initWidget(ui->spinBoxWidthPoint->value(),ui->spinBoxHeightPoint->value()); openedFileName = ""; } } void ZkEdit::enableSaveButton(int w,int h){ ui->pushButtonSave->setEnabled(true); ui->spinBoxHeightPoint->setValue(h); ui->spinBoxWidthPoint->setValue(w); } void ZkEdit::on_pushButtonEnlarge_pressed() { ui->widgetPic->enlargeDisplay(); ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue())); } void ZkEdit::on_pushButtonReduce_pressed() { ui->widgetPic->reduceDisplay(); ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue())); } void ZkEdit::on_pushButtonUp_pressed() { //ui->widgetPic->currPositionMove(0,-1); ui->widgetPic->currPositionMove(0,-1,0,ui->checkBoxTrimPic->isChecked(),ui->checkBoxPicExpand->isChecked()); } void ZkEdit::on_pushButtonLeft_pressed() { //ui->widgetPic->currPositionMove(-1,0); ui->widgetPic->currPositionMove(-1,0,0,ui->checkBoxTrimPic->isChecked(),ui->checkBoxPicExpand->isChecked()); } void ZkEdit::on_pushButtonEnsure_pressed() { ui->widgetPic->ensureCurrPos(); } void ZkEdit::on_pushButtonRight_pressed() { //ui->widgetPic->currPositionMove(1,0); ui->widgetPic->currPositionMove(1,0,0,ui->checkBoxTrimPic->isChecked(),ui->checkBoxPicExpand->isChecked()); } void ZkEdit::on_pushButtonDown_pressed() { //ui->widgetPic->currPositionMove(0,1); ui->widgetPic->currPositionMove(0,1,0,ui->checkBoxTrimPic->isChecked(),ui->checkBoxPicExpand->isChecked()); } void ZkEdit::on_pushButtonSaveAs_clicked() { #ifdef MYSAVEFILEDLG disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0); connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool))); dialogSaveFile->setTitleTxt(tr("图片另存为...")); dialogSaveFile->refreshListView(4); // 在文件保存框中显示目录中的图像文件 dialogSaveFile->setEnterFileName(""); dialogSaveFile->show(); #else if(fileDialog) delete fileDialog; fileDialog = new MyFileDialog(0); disconnect(fileDialog,SIGNAL(accepted()),0,0); connect(fileDialog,SIGNAL(accepted()),this,SLOT(onSaveAS_FIle_select())); fileDialog->showFileDialog(tr("另存为"),QString(DOC_ROOT_DIR),QString("Picture files (*.jpg )")); #endif } void ZkEdit::onSaveASFile(QString fileName,bool Flag){// use for dialogSaveFile class // filename= fileName ; if( !fileName.endsWith(".jpg",Qt::CaseInsensitive) ) fileName = QFileInfo(fileName).baseName()+ ".jpg"; ui->widgetPic->saveImage(fileName); ui->pushButtonSave->setEnabled(false); openedFileName = fileName; ui->labelFileName->setText(fileName); checkNewFileAppending(); } void ZkEdit::onSaveAS_FIle_select(){ QStringList files = fileDialog->selectedFiles(); for(int i = 0;i < files.size(); i++){ QString fileName = files[i]; if( // !fileName.endsWith(".gif",Qt::CaseInsensitive) //&& !fileName.endsWith(".jpeg",Qt::CaseInsensitive) // && !fileName.endsWith(".jpg",Qt::CaseInsensitive) //&& !fileName.endsWith(".png",Qt::CaseInsensitive) //&& !fileName.endsWith(".bmp",Qt::CaseInsensitive) ) fileName += ".jpg"; ui->widgetPic->saveImage(fileName); ui->pushButtonSave->setEnabled(false); openedFileName = fileName; ui->labelFileName->setText(fileName); } checkNewFileAppending(); } void ZkEdit::on_pushButtonOpen_clicked() { forcePicWidgetSize = false; if(fileDialog) delete fileDialog; fileDialog = new MyFileDialog(0); disconnect(fileDialog,SIGNAL(accepted()),0,0); connect(fileDialog,SIGNAL(accepted()),this,SLOT(onOpenFIle_select())); fileDialog->showFileDialog(tr("打开文件"),QString(DOC_ROOT_DIR), QString("Picture files ( *.jpeg *.bmp *.gif *.png *jpg)")); } void ZkEdit::onOpenFIle_select(){ QStringList files = fileDialog->selectedFiles(); for(int i = 0;i < files.size(); i++){ QString fileName = files.value(i); ui->widgetPic->loadImage(fileName,forcePicWidgetSize); openedFileName = fileName; ui->labelFileName->setText(fileName); ui->labelScaleLeval->setText(tr("放大倍数:%1").arg(ui->widgetPic->getScaleValue())); ui->spinBoxHeightPoint->setValue(ui->widgetPic->getHeight()); ui->spinBoxWidthPoint->setValue(ui->widgetPic->getWidth()); } } void ZkEdit::on_pushButtonSave_clicked() { if(!openedFileName.isEmpty()){ ui->widgetPic->saveImage(openedFileName); ui->pushButtonSave->setEnabled(false); } else { #ifdef MYSAVEFILEDLG disconnect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),0,0); connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool))); dialogSaveFile->setTitleTxt(tr("图片保存为...")); dialogSaveFile->refreshListView(4); dialogSaveFile->setEnterFileName(""); dialogSaveFile->show(); #else if(fileDialog) delete fileDialog; fileDialog = new MyFileDialog(0); disconnect(fileDialog,SIGNAL(accepted()),0,0); connect(fileDialog,SIGNAL(rejected()),this,SLOT(onSave_File_reject())); connect(fileDialog,SIGNAL(accepted()),this,SLOT(onSaveAS_FIle_select())); fileDialog->showFileDialog(tr("保存"),QString(DOC_ROOT_DIR),QString("Picture files ( *.jpg )")); #endif } } void ZkEdit::on_pushButtonImport_clicked() { forcePicWidgetSize = true; if(fileDialog) delete fileDialog; fileDialog = new MyFileDialog(0); disconnect(fileDialog,SIGNAL(accepted()),0,0); connect(fileDialog,SIGNAL(accepted()),this,SLOT(onOpenFIle_select())); fileDialog->showFileDialog(tr("导入文件"),QString(DOC_ROOT_DIR),QString("Picture files (*.png *.jpeg *.jpg *.gif *.bmp)")); } void ZkEdit::keyPressEvent(QKeyEvent *e) { switch(e->key()) { case Qt::Key_Return:on_pushButtonEnsure_pressed();break; case Qt::Key_Up: on_pushButtonUp_pressed();break; case Qt::Key_Left: on_pushButtonLeft_pressed();break; case Qt::Key_Right:on_pushButtonRight_pressed();break; case Qt::Key_Down:on_pushButtonDown_pressed();break; default: break; } }