大家好,很高心可以给大家分享一下我作为初学者的学习历程,今天我给大家讲的是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();
}

做好就如下:

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

  1. linux下qt制作日历,基于QT的多功能日历设计与开发.doc

    基于QT的多功能日历设计与开发 上海电力学院 本科毕业设计(论文) 题 目: 基于QT的多功能日历 设计与开发 院 系: 计算机与信息工程学院 专业年级: 2007电子科学与技术 学生姓名: 张岚 学 ...

  2. 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...

    用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...

  3. 基于STM32单片机电子相册设计

    资料编号:188 功能介绍: 本系统采用STM32f103单片机通过SPI接口读取sd卡模块中的图片数据.并在单片机为sd卡模块生成fat文件系统.方便读取sd卡中的文件信息.将Bmp格式的图片存放到 ...

  4. 嵌入式linux电子相册论文,毕业论文--基于QT的嵌入式电子相册

    毕业论文--基于QT的嵌入式电子相册 基于基于 QT的的电子相册开发及移植电子相册开发及移植 Electronic photo album application program developmen ...

  5. (原创)基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示

    在(原创基于ZedBoard的Webcam设计(一):Zedboard上的USB摄像头(V4L2接口)的图片采集中,我们完成了ZedBoard上USB摄像头的单幅图片采集,采集到的图片是存储在文件系统 ...

  6. qt 实现html 编辑器,基于QT的HTML编辑器的设计与实现.doc

    PAGE PAGE 1 郑州大学毕业设计(论文) 题 目:基于Qt的html编辑器的设计与实现 指导教师: 职称: 学生姓名: 学号: 专 业: 院(系): 完成时间: 2012年5月10日 2012 ...

  7. 基于Qt的P2P局域网聊天及文件传送软件设计

    基于Qt的P2P局域网聊天及文件传送软件设计 zouxy09@qq.com http://blog.csdn.net/zouxy09         这是我的<通信网络>的课程设计作业,之 ...

  8. 【C++课程设计】期末大作业 - 基于Qt开发的中国象棋软件

    1 题目 基于Qt的中国象棋软件开发 本博客只是简略的描述论文的大致结构.框架,以及软件开发的大致过程.有兴趣的参考原文档资料. 2总体设计与主要功能 2.1概述 中国象棋是起源于中国的一种棋,属于二 ...

  9. 基于QT的网络嗅探器实现(网络安全课程设计)

    在这学期的网络安全课程设计中,我们需要自己实现一个基于WinPcap编程接口的网络嗅探器,历时两周完成,主要参考资料: 1.WinPcap 中文技术文档(http://www.ferrisxu.com ...

最新文章

  1. R可视化绘制指数分布(Exponential Distribution)
  2. python实现文件搜索_python实现搜索指定目录下文件及文件内搜索指定关键词的方法...
  3. python菜鸟教程h-python菜鸟教程,python好玩又简单的代码
  4. ES6中import * as xxx from ‘xxx‘的作用
  5. windows导出文件名列表
  6. php 简易 blog,PHP实现简易blog的制作
  7. git 怎么拉取线上代码到本地进行合并_android studio如何使用git提交、拉取、合并代码的操作...
  8. pycharm不能输入代码
  9. informix——ODBC数据源配置
  10. C++ Primer 第5版 练习5.14
  11. OSGeolive 开源GIS 使用
  12. element ui table显示本地图片
  13. 青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案
  14. 降级论,升维思考,降维攻击
  15. TP5 页面跳转与重定向
  16. 三坐标检测之测量基准面的选择
  17. python基础学习(十六)——超详细!pickle模块的使用(pickle.dump()和pickle.load())
  18. 【学习SQL数据库】并发操作引起的数据库不一致
  19. Quartz-cron表达式
  20. 苹果(apple)支付退款通知、api

热门文章

  1. Ktor2.0很多新特性,我们一年前就想到了,并已落实在项目中
  2. 3D点云处理:数据集生成点云
  3. 第八章 交互技术,8.1 VR电商购物(作者:宋五)
  4. 道格的账号_雅虎的道格削减MapReduce与Hadoop的未来
  5. QT+MQTT 使用MQTT官方库
  6. math: 坐标系旋转变换公式图解
  7. 研二(上学期)计划安排
  8. Surfer成图--地质图-重力-磁场图-基本操作流程
  9. PTA:宿舍谁最高?
  10. 第六章 戚继光——孤独的将领 –2(稍微次要)