【Qt】实现一个简易相册
文章目录
- 一、ui界面设计
- 二、功能实现
- 1.导入资源
- 2.创建画布
- 3.利用Label展示照片
- 4.设置全局变量
- 5.设置定时器
- 6.定义槽函数中的实现方法
- (1)轮播
- (2)点击上一张
- (3)点击下一张
- (4)停止轮播
- (5)开始轮播
- 三、实现效果展示
一、ui界面设计
UI设计如图所示:
最下面一行四个按钮的类为QPushbutton
显示当前第X张,共X张的标签类为QLabel,方便动态改变标签的值
中间部分显示图像,利用QLabel,利用setPixmap方法显示图片
使用到的对象和类如下图所示:
二、功能实现
1.导入资源
2.创建画布
利用QT下的QPixmap类,用于画布的创建
方法:创建一个新画布,在新画布下引入你需要的图片
//画布map = new QPixmap;//加载资源图片map->load(":/image_01/Image/"+QString::number(a)+".jpg");
3.利用Label展示照片
这一步比较简单。
方法:调用展示图片的label组件中的setPixmap来设置显示的照片,同时也设置一下label组件的其他属性。
//label标签自适应ui->label->setScaledContents(true);//居中显示ui->label->setAlignment(Qt::AlignCenter);//label标签显示图片ui->label->setPixmap(*map);
4.设置全局变量
方法:在对应的头文件声明即可,声明计时器timer,画布map,当前张数
a,总张数b,并将全局变量中张数和总张数的值赋值到对应组件显示的内容中,实现数据与组件的绑定。
album.h:
private: int a;int b;//计时器QTimer *timer;//画布QPixmap *map;
album.cpp:
//初始化a=1;b=8;timer = new QTimer;//画布map = new QPixmap;
5.设置定时器
设置QTimer定时器,能够通过它的定时信号,实现每隔一段时间自动换图的功能。
方法:利用定时器的信号,利用信号槽,设置每隔一段时间改变a,b的数值
//设定计时器timer->start(4000);//信号槽connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
6.定义槽函数中的实现方法
(1)轮播
利用全局变量a的自增,通过setText()方法,让当前张数的Label值发生变化,进而让显示图片的label中的画布发生变化,达到轮播图片的效果
//定时器 每隔一段时间换图
void Album::showTime()
{a++;//判断if(a>8) a=1;//qDebug()<<a;//显示当前信息ui->num1->setText(QString::number(a));ui->num2->setText(QString::number(b));map->load(":/image_01/Image/"+QString::number(a)+".jpg");//label标签显示图片ui->label->setPixmap(*map);
}
对于UI组件的四个按钮,通过在UI界面右键点击组件,再点击“转到槽”,选择clicked()信号,即可实现对应按钮的槽函数。
(2)点击上一张
//点击上一张 切换到上一张 如无操作则继续轮播
void Album::on_btn1_clicked()
{ --a;//判断if(a<1) a=b-(-a);//先停止计时器 最后再开始timer->stop();//qDebug()<<a;map->load(":/image_01/Image/"+QString::number(a)+".jpg");//显示当前信息ui->num1->setText(QString::number(a));ui->num2->setText(QString::number(b));//label标签显示图片ui->label->setPixmap(*map);timer->start(4000);
}
(3)点击下一张
//点击下一张 切换到下一张 若无操作则继续轮播
void Album::on_btn2_clicked()
{++a;//判断if(a>8) a=1;//先停止计时器 最后再开始timer->stop();qDebug()<<a;map->load(":/image_01/Image/"+QString::number(a)+".jpg");//显示当前信息ui->num1->setText(QString::number(a));ui->num2->setText(QString::number(b));//label标签显示图片ui->label->setPixmap(*map);timer->start(4000);
}
(4)停止轮播
//停止轮播
void Album::on_btn3_clicked()
{timer->stop();
}
(5)开始轮播
//开始轮播
void Album::on_btn4_clicked()
{timer->start(4000);
}
三、实现效果展示
【Qt】实现一个简易相册相关推荐
- Qt实现一个简易截图工具(支持缩放、移动、保存、复制到粘贴板)
概述 windows平台,使用Qt Widget实现一个简易截图工具,支持选区角落拖动缩放.选区移动,支持保存,复制到粘贴板,支持快捷键调出截图.退出截图.暂不支持对截图进行编辑操作,以及鼠标移动到程 ...
- qt实现一个简易的计算器
一.下载qt 下载地址:http://download.qt.io/archive/qt/ 下载安装教程:https://blog.csdn.net/cfan927/article/details/9 ...
- linux qt小型计算器课程设计,用Qt设计一个简易计算器
Qt工作原理: 事件驱动,信号与槽原理. 要实现简易计算器的设计需要将界面按钮转到槽,具体程序如下: Widget.h : #ifndef WIDGET_H #define WIDGET_H #inc ...
- 利用Qt制作一个简易聊天软件
需求分析 即时通讯软件是通过即时通讯技术来实现在线聊天.交流的软件.需要完成基本的通信需求及工作场景需求. 架构分析 截图展示 项目简介 我们编写的即时通信软件叫做SeeU,它是一款基于Qt开发平台, ...
- QT专题1:实现一个简易计算器
QT程序开发流程如下: 1.申明必要的部件. 2.将部件构造出来 3必要的布局 4.前后台进行关联 5.美化(QSS) QT基础部件: 1.按钮类:普通按钮,工具按钮,单选按钮,多选按钮,命令连接按钮 ...
- Qt制作一个相册浏览工具
如何用Qt制作一个相册浏览的小程序? 程序开发思路如下: 1.支持多张相片浏览,可翻页浏览,相片可从本地导入; 2.相片要有放大和缩小的功能; 3.相片可自动浏览,时间间隔可自定义. 主要的代码如下: ...
- Qt重定向QDebug,自定义一个简易的日志管理类
0.前言 相对于第三方的日志库,在 Qt 中使用 QDebug 打印更便捷,有时候也需要对 QDebug 输出进行重定向,如写入文件等. 在 Qt4 中使用 qInstallMsgHandler 函数 ...
- 【QT项目】简易五子棋游戏(人机对战)— 完整源码
文章目录 前言 一.游戏实现效果 二.需求分析 三.解决方案 四.核心步骤 1.插入棋盘图 2.双方落子 3.输赢判定 4.重新开始 五.完整源码 1.main.cpp 2.chessboard.h ...
- qt制作一个画板_基于Qt的画图板的设计与实现(含录像)
基于Qt的画图板的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文20000字,程序代码,答辩PPT,答辩视频录像) 摘要 本文的主要内容是记述画图板的设计与实现课程设计中的一些关键技术和辅 ...
最新文章
- 《数学之美》第10章 PageRank--Google的民主表决网页排名技术
- 沉思录---Windows Phone软件开发Beta版回首
- Android localsocket 的基础和使用实践: 01
- 机器学习十大经典算法之AdaBoost
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。
- Bitmap 图片说明
- 狸窝音频剪辑软件_干货资源之精选音频剪辑软件工具
- 项目管理-软件:国内外知名IT项目管理工具【Worktile、PingCode、Jira、Clarizen、禅道】
- 头像制作软件有哪些?2022微信头像制作软件推荐
- python求列表的方差值
- threejs光源的使用
- unexpected indent解决方法
- VLC加载插件失败原因及解决
- js 检测浏览器开发者控制台是否被打开
- 电脑联网了但是浏览器代理服务器出现了问题
- 防爆机器人布里茨还能买到吗_LOL防暴机器人 布里茨皮肤
- aviary 图片编辑器
- Pandoc 实用教程
- hdu2017青岛网络赛Pythagoras(Tree of primitive Pythagorean triples)
- python怎么做表格_零基础小白怎么用Python做表格?
热门文章
- c语言里面%c什么作用,C语言里面,%d%c%f分别是什么意思?怎么用?
- Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
- 解决Android 8.1 获取不到wifi名称
- java.io.InvalidClassException异常产生原因及解决方案
- nodejs+vue+elementui宾馆酒店客房信息管理系统-express
- 最全小说资源网——连载阅读升级版(亲测好用)
- catkin_make报错: ROS Base path和Source space不一致问题,
- 版权变更有哪些流程?
- linux的的shell记忆
- 【LDU】 Week2自测 Disney‘s FastPass | 状压dp、Floyd