基于QT的电子相册设计与实现

来源:互联网 发布:python 内存 结构 编辑:程序博客网 时间:2024/06/08 08:27

大家好,很高心可以给大家分享一下我作为初学者的学习历程,今天我给大家讲的是QT的一个简单的项目——电子相册的设计与开发。做的不是太好,还请广大志同道合的猿友多多指正!

话不多说,老规矩,我就不给大家从QT的使用开始了,直接上代码。

先给大家看看ui界面的设计:
这里写图片描述

.pro文件没改动
widget.h文件如下:

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QString>#include <QLabel>#include <QTimer>#include <QFileDialog>#include <QStringList>#include <QDebug>#include <QPixmap>#include <QMatrix>#include <QTextCodec>namespace Ui {    class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private:    Ui::Widget *ui;    QLabel *label;   // 定义标签用来显示图片    QTimer *timer; //定义时间变量用来设置定时器    QPixmap pix;   //定义图片变量用来设置图片的属性private slots:    void on_right_clicked();    //向右旋转按钮的槽函数    void on_left_clicked();       //向左旋转按钮的槽函数    void on_small_clicked();    //缩小按钮的槽函数    void on_big_clicked();       //放大按钮的槽函数     void on_back_clicked();    //返回按钮的槽函数    void on_stop_clicked();    //停止按钮的槽函数    void on_player_clicked();  //播放按钮的槽函数    void on_Speed_clicked();  //前进按钮的槽函数    void on_open_clicked();    //打开按钮的槽函数    void imageshow();        //自定义加载图片的槽函数};#endif // WIDGET_H

widget.cpp的代码如下:

#include "widget.h"#include "ui_widget.h"int i=0,j=0;  //定义全局变量QString imagelist[100]; //存放打开的图片QStringList::iterator it;  //连接器Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    label = new QLabel;    ui->scrollArea->setWidget(label);               //将label放在scrollArea中    ui->scrollArea->setAlignment(Qt::AlignHCenter);   //居中    timer = new QTimer(this);    connect(timer,SIGNAL(timeout()),this,SLOT(imageshow()));    setWindowTitle(tr("电子相册"));  //程序名}Widget::~Widget(){    delete ui;}void Widget::imageshow(){    pix.load(imagelist[i]);   //下载图片    pix = pix.scaled(label->width(),label->height(),Qt::KeepAspectRatio);    label->setPixmap(pix);    //label->update();    i++;    if(i>j)    {        i=0;    }}void Widget::on_open_clicked()  //打开文件{    int k = 0;    QStringList list = QFileDialog::getOpenFileNames(this,"select file","/","*.*");    for(it = list.begin();it<list.end();it++)    {        imagelist[k] = *it;        qDebug()<<imagelist[k];        k++;    }    j=k-1;    if(j<0)    {        j=0;    }}void Widget::on_Speed_clicked()  //前进{    timer->stop();    i=i+1;    if(i>j)    {        i=0;    }    pix.load(imagelist[i]);    pix.scaled(label->width(),label->height(),Qt::IgnoreAspectRatio);    //设置图片大小为Label的大小,否则就会出现滑动条    label->setPixmap(pix);//显示图片}void Widget::on_player_clicked()  //播放{    timer->start(1000);}void Widget::on_stop_clicked()    //停止{     timer->stop();}void Widget::on_back_clicked()   //后退{    timer->stop();    i=i-1;    if(i<0)    {        i=j;    }    pix.load(imagelist[i]);    label->setPixmap(pix);}void Widget::on_big_clicked()    //放大{    timer->stop();    double w = pix.width();    double h = pix.height();    pix = pix.scaled(w*1.2,h*1.2,Qt::KeepAspectRatio);    label->setPixmap(pix);}void Widget::on_small_clicked()   //缩小{    timer->stop();    double w = pix.width();    double h = pix.height();    pix = pix.scaled(w*0.8,h*0.8,Qt::KeepAspectRatio);    label->setPixmap(pix);}void Widget::on_left_clicked()   //向左旋转{    timer->stop();    QMatrix matrix;    matrix.rotate(90);    pix = pix.transformed(matrix,Qt::FastTransformation);    label->setPixmap(pix);}void Widget::on_right_clicked()   //向右旋转{    timer->stop();    QMatrix matrix;    matrix.rotate(-90);    pix = pix.transformed(matrix,Qt::FastTransformation);    label->setPixmap(pix);}

main.cpp代码如下:

#include <QtGui/QApplication>#include "widget.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));    Widget w;    w.show();    return a.exec();}

做好就如下:
这里写图片描述

0 0
原创粉丝点击