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 ();
}


发布评论