2024年2月19日发(作者:)

图片查看器功能等简介

项目实现功能:实现图片文件自动播放,暂停,放大,缩小,上一张,下一张,还原。

程序源码文件:widget.h

注:在源码编辑之前,把“”图片添加到Resources 里面。

源码如下:

widget.h

#ifndef WIDGET_H

#define WIDGET_H

#include

#include

#include

#include

#include

namespace Ui

{

class Widget;

}

class Widget : public QWidget

{

Q_OBJECT

public:

explicit Widget(QWidget *parent = 0);

~Widget();

QTimer *timer;

QPixmap pix;

QLabel *label;

QImage image1;

QPalette palette;/*背景图片*/

QProcess *process;

private:

Ui::Widget *ui;

private slots:

void on_return_2_clicked();

void on_stop_clicked();

void on_down_clicked();

void on_up_clicked();

void on_max_clicked();

void on_min_clicked();

void on_open_clicked();

void on_exit_clicked();

void on_start_clicked();

void image();

};

#endif // WIDGET_H

具体实现:

#include "widget.h"

#include "ui_widget.h"

#include

#include //对话框库

#include

QStringList::Iterator j;

static int i=0,k=0,m=0;

QString imge[1000]={};

QString

image2[]={":/",":/",":/",":/",":/",":/",":/",":/",":/",":/",":/",":/",":/",":/",":/"};

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

/*ui里一个scroollArea,scroollArea里一个label,label上显示图片*/

label=new QLabel();

ui->scrollArea->setWidget(label);

ui->scrollArea->setAlignment(Qt::AlignCenter);

timer= new QTimer;

connect(timer,SIGNAL(timeout()),this,SLOT(image()));

label->setAlignment(Qt::AlignCenter); //显示在中间

// (image2[1]);

// label->setPixmap(pix);

/*背景图片*/

(":/"); //括号内为图片的相对目录

QImage image2=(320,240);

sh(this->backgroundRole(),QBrush(image2));

this->setPalette(palette);

}

Widget::~Widget()

{

delete ui;

}

/*自动播放*/

void Widget::image()

{

(image2[i]);

label->setPixmap(pix);

i++;

if(i>14) i=0;

}

void Widget::on_start_clicked()//开始自动播放

{

timer->start(2000);

}

void Widget::on_down_clicked()//下一张

{

timer->stop();

i++;

if(i>14) i=0 ;

(image2[i]);

label->setPixmap(pix);

}

void Widget::on_up_clicked()//上一张

{

timer->stop();

i--;

if(i<0) i=14;

(image2[i]);

label->setPixmap(pix);

}

void Widget::on_max_clicked()//放大

{

timer->stop();

float x,y;

if(m==0)

{

(image2[i]);

label->setPixmap(pix);

m++;

}

else{

x=();

y=();

pix= (x*1.5,y*1.5,Qt::KeepAspectRatio);

label->setPixmap(pix);

m++;

}

}

void Widget::on_min_clicked()//缩小

{

timer->stop();

float x,y;

if(m==0)

{

(image2[i]);

label->setPixmap(pix);

m--;

}

else

{

x=();

y=();

pix= (x/1.5,y/1.5,Qt::KeepAspectRatio);

label->setPixmap(pix);

m--;

}

}

void Widget::on_stop_clicked()//停止

{

timer->stop();

}

void Widget::on_return_2_clicked()//还原

{

timer->stop();

(image2[i]);

label->setPixmap(pix);

}

void Widget::on_open_clicked()//打开文件,选图片

{

timer->stop();

QStringList list;

list=QFileDialog::getOpenFileNames(this,"open image","/","*.png");

for(j=();j<();j++)

{

imge[k]=*j;

(imge[k]);

label->setPixmap(pix);

k++;

}

}

void Widget::on_exit_clicked()//退出

{

this->close();

}

主函数:

#include

#include "widget.h"

#include

#include

int main(int argc, char **argv)

{

QApplication a(argc, argv);

Widget w;

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));//解析文字

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

QFont font("wenquanyi", 25);

();

return ();

}