#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QMessageBox>
#include "filehelper.h"
#include <QToolButton>
#include <QPoint>
#include <QDebug>
#include <QPixmap>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//一个页面 水平6张图,垂直2张图
QPoint MainWindow::getPicPostion(int width_pic, int height_pic, int idx)
{
int width = ui->scrollArea->width();
int height = ui->scrollArea->height();
int a = (width - 6 * width_pic) / 7; //6张图,7个空隙
int b = (height / 2 - 2 * height_pic) / 3; //两张图,3个空隙
int x = a + (a + width_pic) * (idx % 6);
int y = b + (b + height_pic) * (idx / 6);
return QPoint(x, y);
}
void MainWindow::on_pushButton_clicked()
{
//检索输入框内指定的路径,把里面的所有图片罗列出来
QString strFilePath = ui->lineEdit->text();
QDir dir(strFilePath);
if(!dir.exists()){
QMessageBox box(this);
box.setText(QString("路径%1不存在,请检查").arg(strFilePath));
box.exec();
}
//搜索指令路径下的所有jpg和png图片。
QList<QString> filelList = FileHelper::ScanFilePath(strFilePath, "png, PNG, jpg, JPG");
if(filelList.count() <= 0){
return;
}
//清除之前加载的图片
QList<QToolButton*> btnList = ui->sa_content->findChildren<QToolButton*>();
if(btnList.count() > 0){
foreach (QToolButton *item, btnList) {
delete item;
}
}
//调整滚动条
ui->scrollArea->setWidgetResizable(false);
int h = (pic_height + 70) * ((filelList.length() + 1) / 6 - 1);
if(ui->sa_content->height() < h){
ui->sa_content->setGeometry(0, 0, ui->sa_content->width(), h);
}
//接下来,将所有图片以指定的大小,作为btn的背景,显示在页面上
int i = 0;
foreach(QString picFile, filelList){
QToolButton *tb = new QToolButton(ui->sa_content);
tb->setObjectName(QString("btnPic_%1").arg(i));
QPoint pt = getPicPostion(pic_width, pic_height, i);
qDebug() << pt.x() << "," << pt.y();
tb->setGeometry(pt.x(), pt.y(), pic_width, pic_height);
tb->setIconSize(QSize(pic_width, pic_height));
QPixmap iconImage(picFile);
iconImage = iconImage.scaled(QSize(pic_width, pic_height), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
tb->setIcon(QIcon(iconImage));
tb->setToolButtonStyle(Qt::ToolButtonIconOnly);
//connect(tb, SIGNAL(clicked()), this, SLOT(showPicForm())); //用一个窗口显示图片
tb->show();
i++;
}
}