Qt项目: 图片查看器

项目简介

实现打开多张图片,左滑就能查看上一张,右滑查看下一张

别人的软件:HD看图
在这里插入图片描述
咱的效果
在这里插入图片描述

QT Ui

在这里插入图片描述

  • 显示图片区域是一个 label
  • 左右箭头是一个 pushButton 查看上一张 下一张图片的
  • 中间的单行文本框(lineEdit)显示图片路径
  • 选择图片:单击打开文件对话框选择多张图片

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QString>
#include <QFileDialog>
#include <QStringList>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:

	//可以单击按钮 右键转到槽  除非你名字跟我一样
    void on_selectImg_clicked();

    void on_preimg_clicked();

    void on_nextimg_clicked();

private:
    Ui::Widget *ui;

    QPixmap pixMap;     //图片对象
    QStringList filenameList;   //图片列表
    int imgLength;  //图片张数
    int index_img;  //当前图片下标
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    imgLength = 0;
    index_img = 0;
    ui->imageBox->setScaledContents(true);  //图片自适应
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_selectImg_clicked()
{
        filenameList =  QFileDialog::getOpenFileNames(this,"打开多张图片",
                                      "F:/images","Images (*.png *.xpm *.jpg *.png);;");

        imgLength = filenameList.length();
        QString filename = filenameList.at(index_img);
        pixMap.load(filename);
        ui->imageBox->setPixmap(pixMap);
        ui->path->setText(filename);
        qDebug()<<"length: "<<imgLength;
}

void Widget::on_preimg_clicked()
{
    index_img--;
    if(filenameList.isEmpty()) return;
    //显示上一张图片
    if(index_img < 0){
        index_img = imgLength - 1;
    }
    //qDebug()<<"index: "<<index_img;
    QString filename = filenameList.at(index_img);
    pixMap.load(filename);
    ui->imageBox->setPixmap(pixMap);
    ui->path->setText(filename);

}

void Widget::on_nextimg_clicked()
{
    //显示下一张图片
    if(filenameList.isEmpty()) return;
    if(index_img > imgLength-1){
        index_img = 0;
    }
    QString filename = filenameList.at(index_img);
    pixMap.load(filename);
    ui->imageBox->setPixmap(pixMap);
    ui->path->setText(filename);
    index_img++;
}

总结

相应了三个按钮的事件,一个是可以打开多张图片的文件对话框,另外两个是查看上一张和下一张图片

打开多张图片的文件对话框

#include <QString>
#include <QFileDialog>
#include <QStringList>

filenameList =  QFileDialog::getOpenFileNames(this,"打开多张图片",
                                      "F:/images","Images (*.png *.xpm *.jpg *.png);;");
/*
	getOpenFileNames 参数
			widget对象  对话框标题  打开的文件目录   文件过滤器(这里是图片)
*/
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值