代码拉取完成,页面将自动刷新
#include "dialog.h"
#include "ui_dialog.h"
#include <QFileDialog>
#include <QMessageBox>
#include <QCoreApplication>
#include <Windows.h>
#include <QMenu>
#include <QDesktopServices>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->btn_add,&QPushButton::clicked,this,&Dialog::BtnAdd);
connect(ui->btn_Start,&QPushButton::clicked,this,&Dialog::ChangeImg);
connect(ui->btn_del,&QPushButton::clicked,[this](){
ui->listImage->clear();
});
connect(ui->btn_Path,&QPushButton::clicked,[this](){
folderPath = QFileDialog::getExistingDirectory(this, tr("选择文件夹"), "", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
folderPath+="/output";
ui->OutPath->setText(folderPath);
});
connect(ui->btn_adds,&QPushButton::clicked,this,&Dialog::GetALLImg);
Count = 0;
Init();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::Test()
{
}
void Dialog::FlashColor(int n)
{
switch (n) {
case 0:
ui->listImage->setStyleSheet("QListWidget::item:even { background-color: yellow; }"
"QListWidget::item:odd { background-color: lightgray; }");
break;
case 1:
ui->listImage->setStyleSheet("QListWidget::Item{background-color:blue;}");
break;
case 2:
ui->listImage->setStyleSheet("QListWidget::Item{background-color:yellow;}");
break;
default:
break;
}
}
void Dialog::OpenFolder()
{
QListWidgetItem* item = ui->listImage->currentItem();
QString Path = item->text();
QStringList list = Path.split('/');
Path.clear();
for(int i = 0;i<list.length()-1;i++)
{
Path+=list[i];
Path+='/';
}
QDesktopServices::openUrl(QUrl(Path));
}
void Dialog::DeleteImg()
{
ui->listImage->takeItem(ui->listImage->currentRow());
}
void Dialog::Info()
{
QDesktopServices::openUrl(QUrl(ui->listImage->currentItem()->text()));
}
void Dialog::Init()
{
setWindowIcon(QIcon("://img//test.icon"));
setWindowTitle("图片转换器");
setFixedSize(QSize(671,384));
ui->listImage->setContextMenuPolicy(Qt::CustomContextMenu);
CreateMenu();
InitList();//初始化列表框
InitFolder();//初始化输出文件夹
}
void Dialog::InitFolder()
{
folderPath = QCoreApplication::applicationDirPath();
folderPath+="/output";
//qDebug()<<path;
QDir dir(folderPath);
if(!dir.exists())
{
dir.mkdir(folderPath);
ui->OutPath->setText(folderPath);
}
ui->OutPath->setText(folderPath);
}
void Dialog::InitList()
{
ui->list_type->addItem("PNG");
ui->list_type->addItem("JPG");
ui->list_type->addItem("ico");
ui->list_type->addItem("BMP");
ui->list_type->addItem("JPEG");
ui->list_type->addItem("TIFF");
}
void Dialog::BtnAdd()
{
file = QFileDialog::getOpenFileName(
this,
"Open Image",
"C:",
"Image Files (*.png *.jpg *.ico)"
);
qDebug()<<file;
if(!file.isEmpty())
{
ui->listImage->addItem(file);
}
}
void Dialog::ChangeImg()
{
QListWidgetItem* fileName = ui->listImage->currentItem();
if(fileName==NULL)
{
int count = ui->listImage->count();
if(count!=0)
{
QDir dir(folderPath);
if(!dir.exists())
{
dir.mkdir(folderPath);
ui->OutPath->setText(folderPath);
}
for(int i = 0;i<count;i++)
{
QListWidgetItem* item = ui->listImage->item(i);
QImage img(item->text());
QString imgName = item->text();
QStringList list = imgName.split("/");
imgName = list[list.length()-1];
list = imgName.split('.');
imgName = list[0];
QString Imgtype = ui->list_type->currentText();
qDebug()<<Imgtype;
if(!img.save(folderPath+"/"+imgName+"."+Imgtype,Imgtype.toStdString().c_str(),100))
{
qDebug()<<"转换失败!!!";
}
}
QMessageBox::information(NULL,"成功","转换成功!!!");
return;
}
QMessageBox::warning(NULL,"警告","没有选择要转换的图片或者没有图片!!!");
return;
}
qDebug()<<fileName->text();
QImage img(fileName->text());
//获取输出文件夹路径
//qDebug()<<path;
QDir dir(folderPath);
if(!dir.exists())
{
dir.mkdir(folderPath);
ui->OutPath->setText(folderPath);
}
//获取图片保存格式
QString Imgtype = ui->list_type->currentText();
qDebug()<<Imgtype;
QString imgName = fileName->text();
QStringList list = imgName.split("/");
imgName = list[list.length()-1];
list = imgName.split('.');
imgName = list[0];
if(!img.save(folderPath+"/"+imgName+"."+Imgtype,Imgtype.toStdString().c_str(),100))
{
qDebug()<<"转换失败!!!";
}
}
void Dialog::GetALLImg()
{
QStringList mImgNames;
QString file = QFileDialog::getExistingDirectory(NULL,"Open Folder",NULL);
if(file.isEmpty())return;
QDir dir(file);
file = dir.fromNativeSeparators(file);
if(!dir.exists())mImgNames = QStringList("");
dir.setFilter(QDir::Files);
dir.setSorting(QDir::Name);
dir.setNameFilters(QString("*.PNG;*JPG;*ICO;*JPEG;*BMP").split(";"));
//dir.setNameFilters(QString("*").split(";"));
mImgNames = dir.entryList();
for (int i = 0; i < mImgNames.size(); ++i)
{
qDebug() << "entryList: " << i << "-" << file + "/" +mImgNames[i];
ui->listImage->addItem(file + "/" +mImgNames[i]);
}
}
void Dialog::CreateMenu()
{
connect(ui->listImage,&QListWidget::customContextMenuRequested,[=](const QPoint& pos){
QMenu *menu = new QMenu;
QAction* Act_open = new QAction("打开文件夹",menu);
QAction* Act_Del = new QAction("删除",menu);
QAction* Act_About = new QAction("详情",menu);
connect(Act_open,SIGNAL(triggered()),this,SLOT(OpenFolder()));
connect(Act_Del,SIGNAL(triggered()),this,SLOT(DeleteImg()));
connect(Act_About,SIGNAL(triggered()),this,SLOT(Info()));
if(ui->listImage->itemAt(pos)!=NULL)
{
menu->addAction(Act_open);
menu->addAction(Act_Del);
menu->addAction(Act_About);
}
menu->exec(QCursor::pos());
delete menu;
});
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。