mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListWidgetItem>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
//显示图片
void show_pic(QString pic_path);
private slots:
void on_toolButton_triggered(QAction *arg1);
void on_toolButton_clicked();
void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_5_clicked();
private:
Ui::MainWindow *ui;
//记录当前图片尺寸
int x;
int y;
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenu>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <QMatrix>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置tool按钮的菜单
QMenu *m = new QMenu(ui->toolButton);
m->addAction("导入文件");
m->addAction("清空文件");
m->addAction("删除文件");
//设置菜单
ui->toolButton->setMenu(m);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::show_pic(QString pic_path)
{
//图片开始的大小
x=ui->label->width();
y=ui->label->height();
//初始化图片
QPixmap pic(ui->listWidget->currentItem()->text());
//设置图片的适应标签
pic = pic.scaled(x,y);
//显示到标签
ui->label->setPixmap(pic);
}
void MainWindow::on_toolButton_triggered(QAction *arg1)
{
//判断用户选择的功能
QString text = arg1->text();
if (text == "导入文件")
{
qDebug() << "导入文件";
QStringList files = QFileDialog::getOpenFileNames(
this,
"Select one or more files to open",
"./",
"Images (*.png *.bmp *.jpg)");
ui->listWidget->addItems(files);
}
else if (text == "清空文件")
{
qDebug() << "清空文件";
ui->listWidget->clear();
}
else if (text == "删除文件")
{
qDebug() << "删除文件";
//取当前的文件位置
int line = ui->listWidget->currentRow();
qDebug() << line;
int ret = QMessageBox::warning(this, tr("温馨提示"),
tr("确定需要删除该文件?\n"),
QMessageBox::Yes | QMessageBox::No);
if(ret == QMessageBox::Yes)
{
ui->listWidget->takeItem(line);
}
}
}
//点击显示菜单
void MainWindow::on_toolButton_clicked()
{
ui->toolButton->showMenu();
}
//双击列表中的图片
void MainWindow::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
//取出图片的路径名
this->show_pic(item->text());
}
void MainWindow::on_pushButton_3_clicked()
{
//取出当前行
int line = ui->listWidget->currentRow();
line--;
if(line < 0)
{
//设置为最后一行
line = ui->listWidget->count();
line--;
}
//设置上一行
ui->listWidget->setCurrentRow(line);
//显示图片
this->show_pic(ui->listWidget->currentItem()->text());
}
void MainWindow::on_pushButton_4_clicked()
{
//取出当前行
int line = ui->listWidget->currentRow();
line++;
if(line >= ui->listWidget->count() )
{
line = 0;
}
//设置下一行
ui->listWidget->setCurrentRow(line);
//显示图片
this->show_pic(ui->listWidget->currentItem()->text());
}
//放大按钮
void MainWindow::on_pushButton_clicked()
{
x = x * 1.2;
y = y * 1.2;
//初始化图片
QPixmap pic(ui->listWidget->currentItem()->text());
//设置图片的适应标签
pic = pic.scaled(x,y);
//显示到标签
ui->label->setPixmap(pic);
}
//缩小按钮
void MainWindow::on_pushButton_2_clicked()
{
x = x / 1.2;
y = y / 1.2;
//初始化图片
QPixmap pic(ui->listWidget->currentItem()->text());
//设置图片的适应标签
pic = pic.scaled(x,y);
//显示到标签
ui->label->setPixmap(pic);
}
//旋转
void MainWindow::on_pushButton_5_clicked()
{
//初始化图片
QPixmap pic(ui->listWidget->currentItem()->text());
static int s = 180;
QMatrix ro;
//设置转角为180度
ro = ro.rotate(s);
//旋转图片
pic = pic.transformed(ro);
ui->label->setPixmap(pic);
s+=180;
}
界面展示