基于QT的电子相册设计与实现
2017-02-20 21:11
471 查看
大家好,很高心可以给大家分享一下我作为初学者的学习历程,今天我给大家讲的是QT的一个简单的项目——电子相册的设计与开发。做的不是太好,还请广大志同道合的猿友多多指正!
话不多说,老规矩,我就不给大家从QT的使用开始了,直接上代码。
先给大家看看ui界面的设计:
.pro文件没改动
widget.h文件如下:
widget.cpp的代码如下:
main.cpp代码如下:
做好就如下:
话不多说,老规矩,我就不给大家从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_OBJECT public: 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(); 4000 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的局域网即时通信系统设计与实现(提供各种版本的源代码)
- 基于Qt的多窗口设计-窗体切换的实现
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计
- 基于S5PV210开发板裸机实现电子相册
- 基于QT-widget的电子词典实现
- 基于Qt的多窗口设计-窗体切换的实现
- 基于Qt的多窗口设计B-窗体切换的实现
- 基于TQ2440的电子相册项目实现
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- 基于Qt/Embedded和Qtopia的GUI设计
- 基于角色-功能-资源的权限控制模型的设计与实现-引子
- 如何设计数据库表实现完整的RBAC(基于角色权限控制)
- 如何设计数据库表实现完整的RBAC(基于角色权限控制)
- 基于RBAC模型的权限管理系统的设计和实现
- 基于AJAX的动态树型结构的设计与实现
- 基于MapXtreme的WebGPS系统的设计与实现
- 基于OAI-PMH的元数据搜索引擎的设计与实现
- 基于WebGIS的地质灾害预警预报系统的设计与实现
- 基于WWW的电子白板的设计