#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenu>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <QPixmap>
#include <QMatrix>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//给menu指定属于哪个组件
QMenu* menu = new QMenu(ui->toolButton);
//添加菜单内容
menu->addAction("导入文件");
menu->addAction("删除文件");
menu->addAction("清空文件");
//设置菜单
ui->toolButton->setMenu(menu);
}
MainWindow::~MainWindow()
{
delete ui;
}
//toolbutton的点击事件槽函数
void MainWindow::on_toolButton_clicked()
{
//点击了tool那肯定就得展开菜单
ui->toolButton->showMenu();
}
//选择菜单选项的槽函数
void MainWindow::on_toolButton_triggered(QAction *arg1)
{
//判断用戶选择的什么
if("导入文件" == arg1->text())
{
QStringList files =
QFileDialog::getOpenFileNames(this,
"请选择图片",
"C:\\Users\\25755\\Desktop\\background",
"Images (*.png *.xpm *.jpg)");
//将获得的图片加入 listWidget
ui->listWidget->addItems(files);
}
if("清空文件" == arg1->text())
{
int ret = QMessageBox::warning(this,tr("注意"),tr("确认清空?"),QMessageBox::Ok| QMessageBox::No);
if(ret == QMessageBox::Ok)
{
ui->listWidget->clear();
}
}
if("删除文件" == arg1->text())
{
int ret = QMessageBox::warning(this,tr("注意"),tr("确认删除?"),QMessageBox::Ok| QMessageBox::No);
if(ret == QMessageBox::Ok)
{
//先获得当前选择的item位置
int row = ui->listWidget->currentRow();
//删除该行
ui->listWidget->takeItem(row);
}
}
}
//展示图片功能
void MainWindow::shouw_picture(const QString path)
{
//获得图片初始大小(其实也就是label的大小)
x = ui->listWidget->width();
y = ui->listWidget->height();
//初始化图片
QPixmap pic(path);
//设置图片的自适应
pic = pic.scaled(ui->label->width(),ui->label->height());
//显示到标签中
ui->label->setPixmap(pic);
}
//双击listwidget中的条数 的信号处理槽函数 (实现功能展示图片)
void MainWindow::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
//展示图片
QString path = item->text();
shouw_picture(path);
}
//上一张图片
void MainWindow::on_pushButton_3_clicked()
{
//获取当前行数
int row = ui->listWidget->currentRow();
//第一张行数是0 所以上一张是-- 不是++
row--;
//获取总行数
int count = ui->listWidget->count();
if(row < 0)
{
row = count - 1;
}
//设置当前行(因为你选中行也得变 不能光图片变
ui->listWidget->setCurrentRow(row);
shouw_picture(ui->listWidget->currentItem()->text());
}
void MainWindow::on_pushButton_4_clicked()
{
//获取当前行数
int row = ui->listWidget->currentRow();
//第一张行数是0 所以上一张是-- 不是++
row++;
//获取总行数
int count = ui->listWidget->count();
if(row == count)
{
row = 0;
}
//设置当前行(因为你选中行也得变 不能光图片变)
ui->listWidget->setCurrentRow(row);
shouw_picture(ui->listWidget->currentItem()->text());
}
//放大图片槽函数
void MainWindow::on_pushButton_clicked()
{
//修改当前图片的大小(不用担心 会影响其他图片)
//因为每次换图片都会重新调用一次展示图片 x y也会重新赋值为label大小
x *= 1.2;
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 y也会重新赋值为label大小
x *= 0.8;
y *= 0.8;
//初始化图片
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());
z += 90;
QMatrix ro;
//设置图片角度
ro = ro.rotate(z);
//旋转图片
pic = pic.transformed(ro);
//设置图片的自适应
pic = pic.scaled(x,y);
//显示到标签中
ui->label->setPixmap(pic);
}
没有合适的资源?快使用搜索试试~ 我知道了~
简单的qt相册小项目.zip
共17个文件
h:3个
cpp:3个
o:3个
需积分: 5 0 下载量 70 浏览量
2024-02-20
19:55:03
上传
评论
收藏 857KB ZIP 举报
温馨提示
qt
资源推荐
资源详情
资源评论
收起资源包目录
简单的qt相册小项目.zip (17个子文件)
qt-album---c---qt-master
picture
YQ_day3_pro_1.pro 990B
mainwindow.h 798B
Makefile 28KB
mainwindow.cpp 5KB
main.cpp 172B
debug
moc_mainwindow.cpp 4KB
moc_mainwindow.o 412KB
mainwindow.o 583KB
YQ_day3_pro_1.exe 1.38MB
main.o 489KB
moc_predefs.h 9KB
mainwindow.ui 3KB
YQ_day3_pro_1.pro.user 22KB
Makefile.Release 37KB
ui_mainwindow.h 6KB
Makefile.Debug 37KB
.qmake.stash 1002B
共 17 条
- 1
资源评论
YOLO数据集工作室
- 粉丝: 478
- 资源: 1568
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功